从CU上看到的一个帖子,关于C++for循环作用域的问题,记录一下。
#include <iostream>
int main()
{
int pos;
for(int i = 0, pos = 0; i < 2; ++i){}
std::cout<<pos<<std::endl;
return 0;
}
用g++编译,输出pos为乱码。用VS 2005编译后,出现运行时错误。
这个问题的本质是在for循环内部定义了一个新的变量叫pos,而函数域内的pos则只被声明,尚未定义。