【共讀Primer】35.<5.2>語句作用域 Page155
阿新 • • 發佈:2018-08-29
prime gin 超出 pan pre tor rim 作用 版本
在if 、switch、 while 和for語句的控制結構內定義的變量只在其結構內部可見,超出結構範圍將變為未定義。
1 #include <iostream> 2 #include <vector> 3 4 using std::cout; 5 using std::endl; 6 7 std::vector<int> v = {1,2,3,4,5,6,7,8,9}; 8 9 10 int get_num() 11 { 12 return 1; 13 } 14 15 16 17 int main() 18 { 19while (int i = get_num()) 20 cout << i << endl; 21 i = 0; 22 23 24 auto beg = v.begin(); 25 while (beg !=v.end() && *beg>=0) 26 { 27 ++beg; 28 } 29 if(beg == v.end()) 30 { 31 32 } 33 }
以上演示了在作用域外使用變量將會變成未聲明。
但是如果有同學使用vs2003版本的話,會發現並不會報錯。
這是編譯器的bug,雖然有時候會被程序員利用。
【共讀Primer】35.<5.2>語句作用域 Page155