我有简单的其他如果并且在单词语法上有错误 - for。 请帮我解决这个问题
Error 4 error C2143: syntax error : missing ';' before 'type'
Error 7 error C2143: syntax error : missing ';' before '{'
Error 3 error C2143: syntax error : missing ')' before 'type'
Error 6 error C2059: syntax error : ')'
我的代码正在检查哪个数组更大并且放大。 这就是我的全部功能:
void PrintIdentical(...)
{
int i;
int smaller;
...
for (i = 0; i < smaller; i++)
{
printf ("%d", arrA[i]);
printf ("%d", arrB[i]);
}
}
答案 0 :(得分:4)
for (int i = 0; ...
此语法为C99,在以前的标准中不允许使用。由于您已经声明了i
,因此您可以将其更改为:
for (i = 0; ...
如果你想要一个块级i
(它会遮蔽你在函数中先前定义的i
),那么使用:
int i;
for (i = 0; ...
或获取支持C99的编译器。
答案 1 :(得分:1)
此代码应该编译,除非您实际忘记使用尾随}
关闭函数。
另一个问题可能是重新声明i
。我在一些编译器上看过这个。另外,注释 - 在for循环中,您不需要重新声明i
,您可以使用现有声明。
我还假设您自己定义了函数print
。
答案 2 :(得分:1)
如果您严格使用C,则不能像现在这样在For loop
体内声明变量。我使用GCC尝试了这个,我得到了编译错误。
error: 'for' loop initial declaration used outside C99 mode
此外,您似乎正在重新声明i
,并且某些编译器无法将其检测为新范围。
答案 3 :(得分:0)
void enticl(int arrA[], int arrA_size, int arrB[], int arrB_size)
{
int i;
int smaller;
int *arr;
if(arrA_size>arrB_size)
{
smaller=arrB_size;
arr = arrB;
}
else
{
smaller=arrA_size;
arr = arrB;
}
for(i = 0; i < smaller; i++)
{
printf("%d\n", arr[i]);
}
}