假設以下簡單的代碼:用相同的變量名內環外環
for(int i=0; i < 1000; i++)
{
cout << "Outer i: " << i << endl;
for(int i=0; i < 12; i++)
{
cout << "Inner i:" << i << endl;
}
}
工程非常好的。兩個循環中都使用相同的變量名稱,並且輸出很好。
我是否理解這兩個變量是在棧上創建的,當外層循環到達新的內層循環時,會創建一個新的「名稱空間」(可能是錯誤的名稱)?但爲什麼它被覆蓋?如果我在內循環中爲變量選擇另一個名稱,我也可以從外循環訪問i
。
有點困惑我。
讀一本好的C++書你必須 – 2012-11-27 14:27:49
這實際上是一個新的變量,但具有相同的名稱。在不同的範圍內,這是可以的。但請注意,從內部循環引用外部'i'是不可能的。 – Maroun
可能重複的[範圍模糊嵌套如果](http://stackoverflow.com/questions/9301629/scope-ambiguity-in-nested-if) – ecatmur