错误期望int之前的主表达式。在功能

时间:2013-11-10 03:50:21

标签: c++

这是我的代码。我尝试修复它并且我总是获得相同的错误:在'int'之前预期的主表达式。

第47,55,63,80,86行。

我之前已经尝试过这个小程序,并且它有效。它没有标记该错误。

`     #include

using namespace std;


int add (int a, int b)
{
int r;
r=a+b;
return (r);
}


int ssub (int a, int b)
{
int r;
r=a-b;
return (r);
}


int mult(int a, int b)
{
int r;
r=a*b;
return (r);
}


int menu(int a, int b){

int r;
char x;
cout <<"What do you want to do: \na.Adding \n s. Substract \n m. Multiply. \n. e. Exit"<<endl;
cin>>x;

switch (x){
case 'a':
cout << "Give a value for a"<<endl;
cin>>a;
cout <<"Give a value for b"<<endl;
cin>>b;
add (int a, int b); //aquí y en otras líneas me sale: expected primary expression before int.
break;

case 's':
cout << "Give a value for a"<<endl;
cin>>a;
cout <<"Give a value for b"<<endl;
cin>>b;
ssub (int a, int b);
break;

case 'm':
cout << "Give a value for a"<<endl;
cin>>a;
cout <<"Give a value for b"<<endl;
cin>>b;
mult (int a, int b);
break;

case 'e':
x='e';
break;

default:
cout<<"Wrong choice. Run the program again and choose another letter"<<endl;
break;
}

return r;

}

cout<<"The result is  " << menu (int a, int b)<<endl;


int main()
{

menu (int a, int b);

return 0;
}

`

3 个答案:

答案 0 :(得分:0)

将主要内容更改为:

int main()
{
    menu();

    return 0;
}

menu更改为:

void menu() {
    int a;
    int b;
    // remove int r; and return r; from menu function
    // then everything else stays the same

switch声明中,更改此内容:

add (int a, int b);

对此:

add(a,b);

在您的函数调用中包含int的其他每个地方都这样做。

答案 1 :(得分:0)

add (int a, int b);

您不能在此处拥有int令牌 - 您希望使用现有变量ab的值,而不是声明它们。它们已在功能介绍int menu(int a, int b)中声明。

你需要:

add(a, b);

答案 2 :(得分:0)

当你调用你的函数时,你应该只使用你传入它的变量名而不在它之前添加它的类型:

...

cout <<"Give a value for b"<<endl;
cin>>b;
add (int a, int b); //aquí y en otras líneas me sale: expected primary expression before int.
break;

...

应该是: ...

cout <<"Give a value for b"<<endl;
cin>>b;
add (a, b); //aquí y en otras líneas me sale: expected primary expression before int.
break;

...

通过在a和b之前添加int关键字,我认为您可能正在重新声明这些变量。