運算子表達式中的初始化器列表:困境
在C 中,用大列表括號括起來的初始化器列表提供了一種初始化變數的便捷方法。然而,當嘗試在運算子表達式中使用初始值設定項清單時,會出現一個有趣的問題。考慮以下程式碼:
為什麼此程式碼會產生錯誤,特別是關於包含表達式baz
初始值設定項清單:表達式的例外
在標準的 §5 下,表達式是精確定義的。令人驚訝的是,初始值設定項清單本身並不被視為表達式。二元運算子(包括
有限例外
標準為初始值設定項提供了幾個例外 -列表用法,包括作為函數參數和賦值語句。但是,該例外並不適用於二元運算子。
限制的原因
此限制的理由是多方面的。根據草案/討論文件 N2215,允許初始化列表同時作為運算符的左側和右側操作數將引入語法複雜性,從而對解析器提出挑戰。論文的作者最終決定,允許它們在右側而不是左側會太麻煩。
結論
雖然初始化列表雖然它們在某些情況下提供了便利,但它們在運算符右側的使用受到限制,這源於句法挑戰和對語言語法一致性的渴望。作為將初始值設定項清單作為操作數的替代方法,可以使用建構函式呼叫或直接將 bar 實例作為參數傳遞給運算子
以上是為什麼初始化列表不能直接用作 C 二元運算子表達式中的運算元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!