在C 中,在「if」語句的條件表達式中宣告變數一直是長期存在的問題限制。從 C 17 開始,此限制已被取消。
以前,在「if」條件中宣告的變數的作用域為「if」語句的子語句。禁止將聲明括在括號中,每個條件只允許有一個聲明。在需要在條件內初始化變數的情況下,此限制很不方便。
考慮程式碼片段:
bool a = false, b = true; if (bool x = a || b) // Cannot declare x within the condition { }
要在「if」範圍內將 x 初始化為 false,需要使用括號由於運算子優先權。但是,不允許使用括號,要求 x 在“if”之外聲明。這將聲明洩露到了更廣泛的範圍。
在 C 17 中,這個約束已經放寬。以下程式碼現在有效:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
注意「;」的使用將聲明與條件分開。這允許多重聲明並在適當的情況下使用括號。
因此,以前不符合要求的內容現在透過 C 17 的引入而成為可能。
以上是C 17 可以在「if」條件內宣告變數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!