我這個過於簡單化的問題道歉,但我似乎無法找出這個例子在書中我讀:有人可以解釋這段代碼(爲什麼這些括號在這裏)?
void f5()
{
int x;
{
int y;
}
}
什麼是圍繞int y
的括號?你可以隨身攜帶牙套嗎?如果是這樣,何時以及爲什麼要這樣做,或者這只是書中的錯誤?
我這個過於簡單化的問題道歉,但我似乎無法找出這個例子在書中我讀:有人可以解釋這段代碼(爲什麼這些括號在這裏)?
void f5()
{
int x;
{
int y;
}
}
什麼是圍繞int y
的括號?你可以隨身攜帶牙套嗎?如果是這樣,何時以及爲什麼要這樣做,或者這只是書中的錯誤?
它的定義範圍。變量Y不能在大括號之外訪問。
大括號表示範圍,變量x將在內部大括號的範圍內可見,但y在大括號範圍外不可見。
大括號定義範圍級別。在大括號外,y
將不可用。
這看起來像一個錯誤(不知道的情況下)
這樣做,你已裝箱的括號內的值y,因此無法使用外面。
當然,如果他們試圖解釋的範圍,這可能是一個有效的代碼
它的作用域變量的問題,如:
void f5()
{
int x = 1;
{
int y = 3;
y = y + x; // works
x = x + y; // works
}
y = y + x; // fails
x = x + y; // fails
}
在範圍出口內的對象銷燬。例如,您可以將一個關鍵部分放在花括號中,並在那裏構建一個鎖定對象。然後,您不必擔心忘記解鎖它 - 在正常情況下或因爲例外情況而退出範圍時,會自動調用析構函數。
這是一種技術,主要應用於C語言,用於在第一個語句後創建本地臨時值。當執行退出結束大括號時,在該範圍內創建的所有變量消失。 –