C - 在变量未编译之前循环

时间:2014-05-07 10:41:17

标签: c variables loops while-loop declaration

我试图在C中的main方法中创建一个循环,并且它没有编译。

以下是代码:

    int i = 1;
    while (i < 10) 
    {
        i++;
    }
    int x;
    int a;
    int b;
    int sum;
    sum = a + b;

它没有编译,因为这个错误:

Error   3   error C2143: syntax error : missing ';' before 'type'

此错误出现在循环后声明的所有变量中。

但是,如果我在这些变量声明之后编写循环,它就可以正常工作。

那为什么我不能在变量声明之前写一个循环?

2 个答案:

答案 0 :(得分:6)

在C89中,所有变量都应该在代码块的顶部声明,即直接在{之后,它们不必在函数的顶部声明。在C99及以后,它们可以在任何地方声明。如果你的函数中有一段代码需要使用一组变量,那么函数的其余部分就不能将这部分包含在一个块{...}中。

答案 1 :(得分:1)

这是过时的Microsoft Visual C编译器的典型响应,它不支持最新的C标准。似乎他们已经陷入困境。

只需在循环之前移动变量,一切都应该没问题。