条件运算符 (?:) 中的类型系统和值类别
在 C 中,条件运算符 (?:) 计算结果为特定类型和值类别的值,它定义了它是否可以引用内存中的对象。
在第一个示例中提供:
int x = 1; int y = 2; (x > y ? x : y) = 100;
x和y都是int变量,且条件x > y 为假。因此,y 被赋值为 100。由于两个操作数的类型相同,因此条件表达式本身成为左值,这意味着它可以被赋值给。
但是,在第二个示例中:
int x = 1; long y = 2; (x > y ? x : y) = 100;
x 是 int,y 是 long,使得操作数的类型不同。要比较 x 和 y,需要进行转换,这会导致条件表达式变为右值而不是左值。由于无法分配右值,因此这种情况下的分配无效。
总而言之,如果第二个和第三个操作数是同一类型的左值,则条件表达式是左值,允许对结果进行分配。如果它们具有不同的类型,则条件表达式将成为右值,无法对其进行赋值。
以上是C 的条件运算符 (?:) 如何根据操作数类型确定左值或右值?的详细内容。更多信息请关注PHP中文网其他相关文章!