注册 登录
编程论坛 C++教室

分析下作用域!

aipb2007 发布于 2007-03-26 20:58, 466 次点击
int i = 100,sum = 0;
for(int i = 0;i != 10;++i)
sum += i;
std::cout << i << "\t" << sum << std::endl;

这段代码是错的,因为i被重定义了。

但是,两次定义i是在不同的作用域中啊。for语句中的i是语句作用域吧,将会覆盖第一次的定义啊,在for语句外输出i应该是个没有定义的i啊?

迷惑了,这是c++ primer上的一道题目,问上面的代码输出是什么?
是书的问题还是我们用的编译器问题,反正上面的代码不能通过编译!
3 回复
#2
Arcticanimal2007-03-26 21:14
你用的是VC++编译器吗?如果是就不稀奇了,这样的情形经常遇到。编译器的问题,自己写程序的话不这样写就行了。
#3
aipb20072007-03-26 21:31
果然是编译器的问题!那就好

这个问题只存在于VC吧?
#4
Arcticanimal2007-03-26 21:39
我一直都是用的VC++,不知道其他的编译器是怎样的
1