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

显示表示,i 变量不可以在for中定义,必须在外面定义,这是为什么?

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

修改之后:

				
时间: 2024-08-06 23:32:08

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

理解#define offsetof(struct_t,member) ((int)&amp;((struct_t *)0)-&gt;member)

#define offsetof(struct_t,member) ((int)&((struct_t *)0)->member) 这个东西很多人应该知道: offsetof是用来判断结构体中成员的偏移位置.他是一个宏定义. (struct_t *)0是一个指向struct_t类型的指针,其指针值为 0,所以其作用就是把从地址 0 开始的存储空间映射为一个 struct_t 类型的对象.((struct_t *)0)->member 是访问类型中的成员 member,相应地 &

有这样的事? 的对方水电费德芙巧克力 int&nbsp;i&nbsp;=&nbsp;0; foreach(i; i&lt;1000; i++){ system.out.println(i); } 还有谁?

有这样的事? 1 #include <event2/event.h> 2 #include <event2/buffer.h> 3 #include <event2/http.h> 4 #include <Winsock2.h> 5 #include <stdlib.h> 6 #include <stdio.h> 7 8 int init_win_socket() 9 { 10 WSADATA wsaData; 11 if(WSASt

讨论int a=1和int a(0)

考虑下面的赋值方式int a=0;int a(1); int* a=new int(0); 非常有趣的一件事情,莫过于我们不能够接受类似int a(1)这样子的赋值,看起来比较别扭,如果是一个类对象 string a; string b=a; string b(a); 可能我们比较适合看这个对象的赋值,因为我们了解到有默认的拷贝构造函数.

jsp中:jsp声明与jsp脚本&lt;%! int count=0;%&gt; 与&lt;% int count=0;%&gt;

<body> <%!int count; %> <%int count2=0; %> 输出声明时候的count:<%=count++ %> <br> 输出脚本的count2:<%=count2++ %> <br> </body>每次刷新该jsp页面时对应的输出结果count每刷新一次增加1 count2每刷新一次 不变 分析: 因为count是jsp中声明的变量,当jsp编译成servlet时,cout是该se

(转)C语言中长度为0的数组

前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该问题进行简单的讲解.废话不多说了,现在就开始. 长度为的数组在标准c和c++中是不允许的,如果使用长度为的数组,编译时会产生错误,提示数组长度不能为.但在GNUc中,这种用法却是合法的.它的最典型的用法就是位于数组中的最后一项,如上面所示,这样做主要是为了方便内存缓冲区的管理.如果你将上面的长度为的

MingW-v4.8.0+EDE-v13.04 配置使用C语言图形库

From: http://www.cnblogs.com/killerlegend/p/3946768.html Author:KillerLegend Date:2014.8.30 MingW的配置教程在这儿: http://www.cnblogs.com/killerlegend/p/3746504.html EDE图形库可以到这儿下载: http://misakamm.bitbucket.org/man/index.htm,其源代码在这儿:http://sourceforge.net/p/

18.n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。 求出在这个圆圈中剩下的最后一个数字。

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4263868.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字). 当一个数字

c语言中的 int (*p)[5] 类型分析

#include<stdio.h> int main() { int i; int  b[5]={1,3,5,7,9}; int  (*a)[5] = &b; int  *m = a;        //a范围内的空间按照 int大小来取值 for(i = 0;i<5;i++) { printf("%d\n",m[i]); } return 0; } 输出结果为 1 2 3 4 5 其中  int  (*a)[5]  表示在栈中产生一个大小为   5个int的

C语言中宏的使用(#,##,do…while(0)宏)

1.预定义宏的使用__FILE__,__FUNCTION__,__LINE__. #include <stdio.h> void fun(void) { char v1; short v2; int v3; long v4; printf("v1: %x\n",&v1); printf("v2: %x\n",&v2); printf("v3: %x\n",&v3); printf("v4: %x\n&