为什么for(int i=0;i<9;i++) 在c语言中是错误的?

显示表示,i变量不可以在for中定义,必须在外面定义,这是为什么?... 显示表示,i 变量不可以在for中定义,必须在外面定义,这是为什么? 展开
 我来答
xshrim
2012-12-22 · TA获得超过2157个赞
知道小有建树答主
回答量:688
采纳率:66%
帮助的人:525万
展开全部

因为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的帐呢。

zhxiufan
2015-12-10 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
标准C语言这样写会出现语法错误的,如果使用T20,这样写肯定会出错,无法编译,正确的写法是:在函数的开始申明变量,之后再使用变量,比如:
void fun()
{
int i;
........
for(i=0;i<9;i++)
..........
}
后来很多集成开发环境,是支持for(int i=0;i<9;i++)这种写法的,不过我的建议还是按照标准的较好,这样在任何情况下都不会出错。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-22
展开全部
换个编译器看看,我在Visual C++6.0中这样写不行,在其他的编译器中(比如说codeblocks、Cfree5、Gev C++)通过了。
追问
Cfree也不行,我刚试了
追答
我刚刚试了下啊,可以啊
#include
int main()
{
int n,a[10],sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
printf("%d\n",sum);
return 0;
}
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
印怜双3E
2012-12-22 · 超过10用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:31.4万
展开全部
我想你以前肯定是学过c++吧!!!!!
虽然说C++是c的升级版,但是还是有区别的嘛!!!!
追问
嗯,c++和java我都学过,他们的变量都可以在for里面定义啊,今天突然发现c竟然不可以!
追答
c语言就是不可以啊,我以前就出现过这种问题而被老师骂,哈哈,所以就记住了!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-22
展开全部
这个语句是正确的啊,你再试一次,反正我运行是正确的,你可以做一个简单的小程序试一试
追问
不行啊   语句是没有任何问题的,我拿到java和C#里运行都是对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式