在
C语言中,三元条件运算符 优先级
高于 赋值运算符。
因此,
x > 0 ? y = x : y = -x; 等价于 (x>0 ? y=x : y) = -x;
(另外,operator= 在C语言中
不是 左值表达式,所以语法错误)
在
C++语言中,三元条件运算符 优先级
同于 赋值运算符。
因此,
x > 0 ?
y = x :
y = -x; 等价于 x>0 ? (y=x) : (y=-x);
(另外,operator= 在C++语言中
是 左值表达式,所以即便是 (x>0 ? y=x : y) = -x 也能编译通过)