在C中声明一个局部变量

Ray*_*rof 1 c visual-studio

我正在努力理解为什么在尝试编译时出现以下代码中的错误:

#include <stdlib.h>
#include <stdio.h>

int main()
{
    puts("");
    int i = 0;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我注释掉puts("");它,它将编译.

我正在使用Visual Studio,我将其作为C代码使用/TC.

Gea*_*phy 8

Visual Studio C有点过时并使用C89.

对于C89,您必须在范围块的开头声明所有变量.

对于上面的代码,这应该有效

int main()
{
    int i = 0;
    puts("");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,您还可以执行以下操作

int main()
{
    puts("");
    {
        int i = 0;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)