注册 登录
编程论坛 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
rjsp2019-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小白23332019-08-02 18:27
回复 3楼 rjsp
非常感谢  
#5
c小白23332019-08-02 18:30
回复 3楼 rjsp
想给你19分的   不会分分结贴  
就这样了
1