变量有效值范围的问题

rcbblgy 2008-10-28 09:17:39
C++ Primer上有这样一段:

在语句的控制结构中定义的变量,仅在定义它们的块语句结束前有效。这种变量的作用域限制在语句体内。通常,语句体本身就是一个块语句,其中也可能包含了其他的块。一个在控制结构里引入的名字是该语句的局部变量,其作用域局限在语句内部。

// index is visible only within the for statement
for (vector<int>::size_type index = 0;
index != vec.size(); ++index)
{ // new scope, nested within the scope of this for statement
int square = 0;
if (index % 2) // ok: index is in scope
square = index * index;
vec[index] = square;
}
if (index != vec.size()) // error: index is not visible here


但是我自己在vc6里写了这样一段:
for(int i=0;i<2;++i);

cout<<i;

却可以正确编译及运行,为什么?为什么在for的语句块外也可以访问i?

而在while的条件表达式里定义的i却不能在句块外部访问?

while(int i = 1)
break;
cout<<i;

这样写程序会报错。
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rcbblgy 2008-10-28
  • 打赏
  • 举报
回复
知道了,谢谢。
太乙 2008-10-28
  • 打赏
  • 举报
回复
vc6.0就是这样,编译器不一样而已

lz换个编译器就不好使!呵呵~~
liumingrong 2008-10-28
  • 打赏
  • 举报
回复
这种问题没必要深究,不同编译器处理方式不一样,
比如
for(int i=0;i <2;++i);

cout < <i;
在gcc上就通不过
帅得不敢出门 2008-10-28
  • 打赏
  • 举报
回复
vc6.0 对于这个标准支持不够.

65,207

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧