C语言中for(int i=0;i<5;i++){}总是报错

在for循环之前先声明i就没事,难道这种也要先生命吗

因为C99标准以前的C标准是不支持临时变量在for循环中定义的。

C99标准就支持这样写。但是目前有些编译器并不怎么愿意支持C99标准,或者默认以C89模式进行编译执行。

如果你用的是Visual C++6.0的话,那没办法,那货早停止更新了,不可能支持C99了。

如果用的是gcc 的编译器(v3.0以上)的话,默认按C89编译。手动编译时加上-std=c99就行了能按C99标准编译,上面那样写就没问题了。比如:

gcc -std=c99 tset.c -o test

如果用的是使用gcc编译器的CodeBlocks的话,倒是知道怎么让它默认自动以C99标准编译:

settings -> compiler and debugger...

打开编译调试设置面板,在Global compiler settings项里面的Other options里添加-std=c99就行了。

其他使用gcc的IDE应该都能设置这个的。

不过建议还是按C89的写法写吧,很多地方写成C99标准的都会出错,谁叫他们不买C99的帐呢。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-08
别乱想 我先告诉你 这样写是绝对没错的,要不是循环错了,要不就是i被定义过了,总之,这个for语句是没错的 ,你自己看看别的代码吧追问

#include
#include
void main()
{
char *p[5]={"calc","notepad","tasklist","mapaint","win"};
for(int i=0;i<5;i++)
{
printf("%s,%c\n",p[i],*p[i]);
}
system("pause");
}

本回答被网友采纳
第2个回答  2015-09-08
c99标准之前是不允许这样声明变量的,而现在大多数编译器遵循的还是c89标准,可以在编译时加入-std=c99强制使用c99标准,或者换用clang,clang默认是c99标准追问

是这样吗,我用的是vs2010

第3个回答  2015-09-08
看编译器的,不同的编译器不一样追问

我是在看一个视频,上面就有这种写法不报错,但是他用的是vs2013,我的是vs2010,但是感觉for循环一直是在里面定义i的啊

追答

我清楚13和10的运行的机制是不是一样的,不一样的机制运行的不一样,有些是用严格模式编译c的,有的不是,所以对待这样的写法也不一样的处理

第4个回答  2015-09-08
C语言不能这么写,C++语法可以这么写
相似回答