语法if else在函数内部

时间:2012-01-04 08:18:47

标签: c

我有简单的其他如果并且在单词语法上有错误 - 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]);
    }
}

4 个答案:

答案 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]);
    }
}