三元条件运算符及其结果左值或右值
三元/条件运算符('?:')提供了用于选择的简写语法基于条件的两个表达式之一。了解该运算符的结果类型对于各种编程任务至关重要。
作为左值的条件表达式
当第二个和第三个操作数是左值时,条件运算符返回左值属于同一类型。当以下代码中的两个操作数(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中文网其他相关文章!