2012-08-15 12 views
2

我的老師給了我一個問題(С++): 什麼會在屏幕上打印後:重複的變量外牙套

{ 
    int a = 2; 
    cout << a << endl; 
    { 
     int a=7; 
     cout << a << endl; 
    } 
    cout << ++a << endl; 
} 

我不知道是有什麼複雜?或者只是重複的標識符?或者這樣的大括號在任何地方都會有特定的效果,並且可能會毫無錯誤地執就像變量不存在於外部的函數一樣。它可以在大括號之外嗎?這些大括號是什麼?

+3

你試過編譯它嗎? – antlersoft 2012-08-15 22:37:39

+6

我很失望,你可能花了很多時間來寫這個問題,因爲它會花費在文本編輯器中輸入代碼,編譯和運行它。通過這個簡單的行爲,你將會接受運行一段代碼,檢查輸出結果以及試圖理解其背後原因的挑戰。這種試驗和觀察的好奇驅動力是計算機程序員的基本素質。 – paddy 2012-08-15 22:53:04

+0

我認爲'在任何情況下會在屏幕上打印什麼的最佳答案是運行代碼以查看會發生什麼。 – 2012-08-16 19:47:03

回答

6

在這種情況下,大括號分隔變量的範圍。內括號基本上聲明一個新變量a,隱藏外部變量。

這相當於

{ 
    int a=2; 
    cout<<a<<endl; 
    { 
    int b=7; cout<<b<<endl; 
    } 
    cout<<++a<<endl; 
} 

不同的是a是不是在裏面範圍內都有效。

輸出將是

2 
7 
3 
1

撐杆形成新的範圍。內部塊中的變量a與外部塊中的a是不同的變量。