#c #vector
Вопрос:
vector<int> oper(int A, int B) {
std::vector <int> arrayV;
int addition = A B;
arrayV.push_back(addition);
int mutiplication = A * B;
arrayV.push_back(mutiplication);
int subtraction;
if(A >=B ){
subtraction = A - B;
}
else(B >A );{
subtraction = B - A;
}
arrayV.push_back(subtraction);
int division;
if(A >=B ){
division = A / B;
}
else(B >A );{
division = B / A;
}
arrayV.push_back(division);
}
//Может ли кто-нибудь сообщить мне, где я ошибся с моим кодом, что он продолжает говорить мне «Ошибка эгментации (SIGSEGV)», я хочу, чтобы arrayV мог хранить числа после , *, -, /;
Комментарии:
1. Можете ли вы опубликовать весь код и как вы вызываете функцию, потому что я не видел ничего подозрительного? Может быть, я что-то упустил. (Я замечаю, что вы забываете
return
о векторе, но это не объясняет, почему существует ошибка сегментации)2. Это весь раздел, который у меня есть, потому что я выполняю этот блок кода в этой самой векторной функции(); даже если я добавлю return arrayV (), я получу код ошибки «prog.cpp:33:5: ошибка: ожидаемый неквалифицированный идентификатор перед возвратом return arrayV;»
3. @justANewbie, возвращающий вектор, вполне может привести к ошибке сегментации. У него неопределенное поведение.
4. Это
else(B >A );{
то, что у вас на самом деле есть в вашем коде? Мне это кажется неправильным.5. @Embeddeder Тогда вы, должно быть, написали
return arrayV;
не в том месте.
Ответ №1:
Как я и другие отмечали в комментариях, вы забыли return arrayV;
это сделать . Кроме того, else
у вас неправильный синтаксис
std::vector<int> oper(int A, int B) {
std::vector <int> arrayV;
int addition = A B;
arrayV.push_back(addition);
int mutiplication = A * B;
arrayV.push_back(mutiplication);
int subtraction;
if(A >=B ){
subtraction = A - B;
}
else{
subtraction = B - A;
}
arrayV.push_back(subtraction);
int division;
if(A >=B ){
division = A / B;
}
else{
division = B / A;
}
arrayV.push_back(division);
return arrayV;
}