首頁 >後端開發 >C++ >C 17 可以在「if」條件內宣告變數嗎?

C 17 可以在「if」條件內宣告變數嗎?

Linda Hamilton
Linda Hamilton原創
2024-12-02 09:15:13745瀏覽

Can C  17 Declare Variables Inside an 'if' Condition?

「if」表達式中的C 變數宣告:在C 17 中解決

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn