从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则只被声明,尚未定义。

本文探讨了C++中for循环内部定义变量与外部同名变量的作用域冲突问题。通过一个具体的示例代码,展示了当for循环内与外同时声明相同变量名时,不同编译器下可能出现的不同编译及运行时错误。

822

被折叠的 条评论
为什么被折叠?



