我在编译以下代码时遇到了问题:
#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;
}错误消息为:
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但是,对此进行编译就可以了:
#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;
}知道问题出在哪里吗?
发布于 2010-01-14 06:45:43
在C中,在执行任何代码之前,必须在作用域的顶部声明变量。但在C99中情况并非如此( Visual Studio没有实现这种情况)。
发布于 2010-01-14 06:47:00
Visual Studio不支持C99,因此块中的所有声明(如示例中的aa )必须出现在任何语句(如printf调用)之前。
发布于 2010-01-14 06:47:12
在(旧的) C中,您不能像在C++或最新的C标准中那样在任何地方声明变量。你必须在一个作用域的大括号后面直接声明它,就像你的第二个例子一样。
https://stackoverflow.com/questions/2060855
复制相似问题