C 中「if」表達式內的變數宣告
在C 中,能夠在「if」語句的條件下宣告變數已成為限制的主題。編譯器(包括 Visual Studio 2008)經常遇到括在括號中的變數宣告或單一條件中的多個宣告的困難。
根據 2003 C 標準第 6.4.3 節,選擇語句中聲明的變數具有作用域延伸到由條件控制的子語句的末尾。但是,該標準沒有明確解決括號或多個聲明的使用。
例如,以下程式碼無法編譯:
if((int a = Func1())) { // Fails to compile. }
即使只需要一個聲明的情況,這種限制可能會令人沮喪。請考慮以下內容:
bool a = false, b = true; if(bool x = a || b) { }
要在“if”主體範圍內將“x”設為“false”,聲明需要括號。但是,條件內不允許使用括號,從而強制在體外聲明“x”並將其洩漏到更廣泛的範圍。
從 C 17 開始,這些限制已解決。現在可以使用以下程式碼:
if (int a = Func1(), b = Func2(); a &&& b) { // Do stuff with a and b. }
使用 ';'代替“,”將聲明與條件分開,解決了先前的限制。
以上是C `if` 語句可以在其條件內宣告變數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!