编程论坛
注册
登录
编程论坛
→
C语言论坛
简单小问题 在线送分
c小白2333
发布于 2019-08-02 13:30, 2074 次点击
已有声明:
int x = 5, y;
float z = 2;
下列表达式语法有何错误
x > 0 ? y = x : y = - x;
4 回复
#2
尽往昔
2019-08-02 15:19
你确定有问题?
#3
rjsp
2019-08-02 15:23
在
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 也能编译通过)
#4
c小白2333
2019-08-02 18:27
回复 3楼 rjsp
非常感谢
#5
c小白2333
2019-08-02 18:30
回复 3楼 rjsp
想给你19分的 不会分分结贴
就这样了
1