1. 程式人生 > >【共讀Primer】35.<5.2>語句作用域 Page155

【共讀Primer】35.<5.2>語句作用域 Page155

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 {
19
while (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