关于循环变量i的作用域

C语言 码拜 9年前 (2016-04-05) 852次浏览
#include <stdio.h>
#define SIZE 5
int main(void)
{
   int array[SIZE] = {1,2,3,4,5};
   for(int i = 0;i < SIZE;++i)
        printf("%d\n",array[i]);
}

以上代码为什么编译不通过,FOR头内定义的i,在循环体内不能被访问到吗?非得在外头再声明一遍 i 吗?

解决方案

4

c++都没问题。假如是c语言,应该是c99才有的吧。
本人用gcc,默认不支持,要加个选项-std=c99
VS2012的命令行cl.exe,也不支持,不知道有没有办法可以支持的。
题主看看你的编译器有没有设置支持c99

3

你这有的trubo c 还是vc6.0啊,赶快下个vs最新版的开发工具

3

-std=c99,以前版本不支持

3

引用:
Quote: 引用:

和编译器有关。题主用的什么?
这个写法在最早的c语言里没有,后来加上的。所以有些编译器可能不支持;或默认不支持要加选项才支持。

本人用的是VS2010里带的编译器,本人设置了环境变量。在CMD手动编译的

CL并不是很好的支持标准C哦,题主可以把后缀改成CPP再编译,或使用GCC开启C99支持编译

4

C语言的写法一般都是把int i;写在for前面的

5

#include <stdio.h>
int main(void) {
	for(int i=0;i<5;i++)
		printf("Gee!");
	return 0;
}

用gcc(Mingw)编译这个代码,首次报错(如图),提示加”-std c99″,之后成功(如图),可见只有C99支持这个操作。
关于循环变量i的作用域


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于循环变量i的作用域
喜欢 (0)
[1034331897@qq.com]
分享 (0)