「if」表達式中的變數宣告:澄清規則
「if」表達式條件中宣告的變數一直是問號程式員有一段時間了。 C 標準最初概述了這些變數的範圍,但在括號和多重聲明方面仍然存在歧義。
在提供的範例中,當變數宣告周圍使用括號時,編譯器無法編譯:
if((int a = Func1())) { // Fails to compile. }
此行為也擴展到單一條件中具有多個宣告的情況,這是由於聲明必須緊接在條件本身之前的規則。括號打破了這個規則。
但是,隨著 C 17 的引入,情況發生了變化:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
現在,可以使用 ; 在括號內聲明變數。將聲明與條件分開。此增強功能擴展了“if”條件的靈活性。
以上是C 17 如何改變「if」表達式中變數宣告的規則?的詳細內容。更多資訊請關注PHP中文網其他相關文章!