关于变量作用域的问题

douchog_13k 2009-03-29 12:27:46



#include "stdafx.h"
#include <iostream>
int main(int argc, char* argv[])
{
using namespace std;
for(int i=0;i<10;i++)
{
cout<<i;
}
int i=1;
return 0;
}


for 语句中的i作用域不是在for语句内吗,为什么在for语句外不能重新定义i?
...全文
126 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
应该是VC里不单独为设置数据区,在for里声明相当于在函数里声明。
wwwwfly 2009-03-29
  • 打赏
  • 举报
回复
这主要是看编译器,vs2005以上都不会有错了,标准C++也是允许这样定义的
brookmill 2009-03-29
  • 打赏
  • 举报
回复
我用g++编译,没问题。
douchog_13k 2009-03-29
  • 打赏
  • 举报
回复
在VC6.0中编译以上代码有错,
在VC2008中不会有错,可能是因为编译器编译原理的问题吧
mengde007 2009-03-29
  • 打赏
  • 举报
回复
但是它们在一个函数体内。如果是在函数体外,那么就可以了
  • 打赏
  • 举报
回复
不过VC6确实会提示redefination,呵呵~
  • 打赏
  • 举报
回复
应该没问题,for循环里面定义的i是个局部变量,用完后就释放了,与后面的i不冲突的
lqrkkl 2009-03-29
  • 打赏
  • 举报
回复
老师说不能这样定义变量!~
yangch_nhcmo 2009-03-29
  • 打赏
  • 举报
回复
GCC 4.3.2 下是可以编译通过的,
VC6可能只将{}作为一个作为一个作用域,楼主可以试试在for()循环体内声明个变理,然后再在外面声明一个试试,看会不会报错
xsz88 2009-03-29
  • 打赏
  • 举报
回复
你在FOR语句内定义了变量I,FOR语句外,只能赋值。
lei_zhuyan 2009-03-29
  • 打赏
  • 举报
回复
你绝对用的是VC6.0
赶快扔了VC6,换个编译器吧、
devcpp
wingw
vc++2005
vs2005/2008
gcc
选择的很多,没必要VC6.0

tanlee007 2009-03-29
  • 打赏
  • 举报
回复
可能是编译器缘故!
vs2005可以通过的!

65,211

社区成员

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

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