三元條件運算子及其結果左值或右值
三元/條件運算子('?:')提供了用於選擇的簡寫語法基於條件的兩個表達式之一。了解該運算符的結果類型對於各種程式設計任務至關重要。
作為左值的條件式
當第二個和第三個運算元是左值時,條件運算子傳回左值屬於同一型別。當下列程式碼中的兩個運算元(x 和y)都是整數時,就會觀察到這種情況:
int x = 1; int y = 2; (x > y ? x : y) = 100; // Assignment is allowed since the result is an lvalue
在這種情況下,條件式(x > y ? x : y) 是一個左值,這使得隨後賦值為100。
條件式為右邊值
但是,當第二個和第三個運算元有不同型別時,條件式會變成右邊值。這在下面的程式碼中很明顯:
int x = 1; long y = 2; (x > y ? x : y) = 100; // Error: Assignment is not allowed for rvalues
由於 x 隱式轉換為 long 以符合 y 的類型,條件表達式變成了右值。由於右值不可修改,因此賦值操作會失敗。
確定結果類型
條件表達式的類型和值類別在編譯時決定。它符合以下規則:
理解這些規則可以確保有效使用三元/條件運算子。
以上是三元運算子的結果是左值還是右值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!