3
(目標C代碼)具有相同變量名稱的變量作用域?
int i=5;
{
int i=i;
NSLog(@"Inside Scope: %i",i);
}
NSLog(@"Outside Scope: %i",i);
打印:
3385904(垃圾)
正確更換int i = i;
與int i= 10;
打印...(內部範圍的i
)
如:
立即和(僅此代碼)
int i=i;
編譯,但段錯誤。
這些語法是如何有效的?它們有什麼用處,或者它們是早期應該被捕獲的編譯器錯誤?
是否有任何情況需要在新類型下使用新範圍內的相同變量名稱,以及如何區分?
我唯一的想法可能是for() loop
,因爲如果你有兩個循環,編譯器會不高興你重新定義了int i;
兩次。
我不確定規範中關於'int i = i;'的內容,但顯然它是無效的。在'{}'裏面定義一個新的'i'是完全合法的,但偶爾也是有用的(儘管可能會引起混淆和錯誤發生)。 – 2012-02-13 17:24:09
我希望你可以設置(或者真的是默認設置),當你在同一個方法中的兩個作用域中使用相同的變量名時,編譯器會拋出一個錯誤。我從來不想這樣做。也許有這樣一面旗幟......哎呀猜猜這是一個問題。 – 2012-02-13 17:46:17