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