Visual Studio 2008中奇怪的编译错误

seg*_*ult 3 c visual-studio

我在编译以下代码时遇到问题:

#include <stdio.h>
#include <limits.h>
int main () {
    printf("short: [%d,%d]\n",SHRT_MIN,SHRT_MAX);
    printf("int: [%d, %d]\n",INT_MIN, INT_MAX);
    printf("long: [%d, %d]\n",LONG_MIN,LONG_MAX);
    int aa=017;
    printf("%d\n",aa);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误信息是:

1>c:\tic\ex1\ex2\ex2.c(12) : error C2143: syntax error : missing ';' before 'type'
1>c:\tic\ex1\ex2\ex2.c(13) : error C2065: 'aa' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)

但是,编译这个很好:

    #include <stdio.h>
    #include <limits.h>
    int main () {
        int aa=017;
        printf("short: [%d,%d]\n",SHRT_MIN,SHRT_MAX);
        printf("int: [%d, %d]\n",INT_MIN, INT_MAX);
        printf("long: [%d, %d]\n",LONG_MIN,LONG_MAX);
        printf("%d\n",aa);
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

知道问题是什么吗?

GMa*_*ckG 10

在C中,在执行任何代码之前,必须先在范围的顶部声明变量.在C99中不是这种情况(Visual Studio没有实现.)