我从一个站点读到 C99 取消了 C 中的变量必须在块的顶部声明的限制。我在下面的程序中进行了测试,确实是这样,因为我没有收到任何错误。但是在同一个程序中,如果我在for
循环的第一条语句中声明一个变量,我会得到错误:
'for' loop initial declarations are only allowed in C99 mode|
这里有两件事。既然确实允许在程序中间声明变量,就像我为 所做的那样i
,那为什么我不允许在for
循环语句中这样做呢?其次,如果我的编译器(Codeblocks/gcc)还没有处于 C99 模式,为什么我在中间而不是顶部声明变量时没有收到错误消息?
#include <stdio.h>
int main (void)
{
//Proof that initialization in middle works (for i)
printf("Enter\n");
char string[20];
scanf("%s", string);
int i=20;
printf("%s,%i", string, i);
//Proved that it works
for(int j=0; j<10; j++) //THIS IS NOT ALLOWED
printf("%d\n", j);
}