C ++错误:"之前的预期标识符("令牌

时间:2015-06-18 14:56:10

标签: c++

int nn1,nn2;
for (int i=1;i<=m;i++) if (A[i]>minim) && (A[i]<maxim) nn1++;
for (int j=1;j<=n;j++) if (B[j]>minim) && (B[j]<maxim) nn2++;
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";

return 0;
}

任何人都可以给我一个建议,为什么编译器显示错误?

6 个答案:

答案 0 :(得分:3)

在这些if语句中,没有外部括号

for (int i=1;i<=m;i++) if (A[i]>minim) && (A[i]<maxim) nn1++;
for (int j=1;j<=n;j++) if (B[j]>minim) && (B[j]<maxim) nn2++;

我认为应该有

for (int i=1;i<=m;i++) if ( (A[i]>minim) && (A[i]<maxim) ) nn1++;
for (int j=1;j<=n;j++) if ( (B[j]>minim) && (B[j]<maxim) ) nn2++;

循环看起来很可疑。考虑到数组索引从0开始。例如,如果你有一个大小为N的数组,那么索引的有效范围是[0, N-1]

您忘了初始化nn1nn2

看来你的意思是以下

int nn1 = 0, nn2 = 0;

for ( int i = 0; i < m; i++ ) 
{
    if ( ( A[i] > minim ) && ( A[i] < maxim ) ) nn1++;
}

for ( int i = 0; i < n; i++ ) 
{
    if ( ( B[i] > minim ) && ( B[i] < maxim ) ) nn2++;
}

if ( nn1 > nn2 ) cout << "1";
else if ( nn1 < nn2 ) cout << "2";
else cout << "0";

答案 1 :(得分:3)

如果条件允许,请将括号括起来。像if(condition1&amp;&amp; condition2)之类的东西。我还建议对每个分支条件使用大括号。

for (int i=1;i<=m;i++) {
    if ((A[i]>minim) && (A[i]<maxim)) { 
        nn1++;
    }
}
for (int j=1;j<=n;j++) {
    if ((B[j]>minim) && (B[j]<maxim)) {
        nn2++;
    }
}

答案 2 :(得分:2)

在处理ifs

时要小心谨慎
if ( (B[j]>minim) && (B[j]<maxim) )

   |                              |
   V                              V

 Add these 

所以,你的代码应该是:

int nn1,nn2;
for (int i=1;i<=m;i++) if ( (A[i]>minim) && (A[i]<maxim) ) nn1++;
for (int j=1;j<=n;j++) if ( (B[j]>minim) && (B[j]<maxim) ) nn2++;
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";

return 0;
}

答案 3 :(得分:2)

围绕整个条件缺少括号:

for (int i=1;i<=m;i++) if((A[i]>minim) && (A[i]<maxim)) nn1++;
//                       ^                            ^

答案 4 :(得分:2)

你忘了if语句中的()。试试这个:

int nn1,nn2;
for (int i=1;i<=m;i++) if ((A[i]>minim) && (A[i]<maxim)) nn1++;   //note extra ()
for (int j=1;j<=n;j++) if ((B[j]>minim) && (B[j]<maxim)) nn2++;   //note extra ()
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";
return 0;
}

答案 5 :(得分:2)

在C ++中,应该有一个完整的&#34;()&#34;在&#34; if&#34;之后以及&#34;()&#34;是条件。 所以,你展示的代码是if(A [i]&gt; minim)&amp;&amp; (A [i] minim)&amp;&amp; (A [i]于