标题:关于for循环中定义变量的作用域问题.
只看楼主
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
 问题点数:0 回复次数:9 
关于for循环中定义变量的作用域问题.

for(int i=0;i<10;i++)
{

}

这样的i的作用域是什么呢?
搜索更多相关主题的帖子: 变量 定义 
2006-11-05 15:27
lrgsz
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-27
得分:0 
i只是控制循环,当此循环结束或异常退出时候i就见阎王去了!

学习如逆水行舟,不进则退!
2006-11-05 15:41
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
得分:0 

但是在VC中,如果我这样写:


int a[10],b[10];
for(int i=0;i<10;i++)
{
a[i]=i;
}
for(int i=0;i<10;i++)
{
b[i]=i;
}


它会给我重复定义i的错误,为什么呢?


2006-11-05 15:47
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
得分:0 
标准说的是i的作用域仅在for循环内,但在vc6中,i的作用域大于循环,在vc2003中就没问题,究其原因,vc6老了,许多标准都不支持

2006-11-05 15:56
lrgsz
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-27
得分:0 
在main()中int i,给i分配的内存还没有释放,你再定义一个i,就会出错。for(int i=0;i<10;i++)
{
b[i]=i;
}
改成for(i=0;i<10;i++)
{
b[i]=i;
}
就可以了!


学习如逆水行舟,不进则退!
2006-11-05 15:58
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
不是VC6。0老了
是它优化太强了
都给优化了

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-05 17:29
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
不是VC6。0老了
是它优化太强了
都给优化了

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-05 17:29
litcatyx
Rank: 1
等 级:新手上路
威 望:1
帖 子:151
专家分:0
注 册:2006-10-27
得分:0 
这算是优化?那为什么vc2003不这么优化,gcc不这么优化

2006-11-05 18:46
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
得分:0 
以下是引用song4在2006-11-5 17:29:45的发言:
不是VC6。0老了
是它优化太强了
都给优化了

优化?不是吧


2006-11-05 20:26
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
得分:0 
怎么不是,


一种语言的编译器只要能支持90%这种语言就不错了,虽然在正常的for(int i)这种定义,只在for内有效,但是,在不同的编译器中是不一样的,在其他语言,如JAVA里也会出现这种情况

樹欲靜而風不止... http://blog./seablue_xj
2006-11-05 20:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-100879-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.108487 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved