gpt4 book ai didi

c - 条件运算符中使用的赋值语句

转载 作者:太空狗 更新时间:2023-10-29 17:27:21 25 4
gpt4 key购买 nike

谁能告诉我为什么这个语句会出错 - 需要左值

(a>b?g=a:g=b); 

但是这个是对的

(a>b?g=a:(g=b));

其中a、bg是整型变量,ab作为输入键盘。

最佳答案

在表达式中,

(a > b ? g = a : g = b);

关系运算符 > 具有最高优先级,因此 a > b 被分组为操作数。条件表达式运算符 ? : 具有次高的优先级。它的第一个操作数是a>b,第二个操作数是g = a。但是,条件表达式运算符的最后一个操作数被认为是 g 而不是 g = b,因为 g 与条件表达式运算符的绑定(bind)比与赋值运算符的绑定(bind)更紧密。发生语法错误,因为 = b 没有左操作数(左值)。
您应该使用圆括号来防止此类错误并生成更具可读性的代码,这些代码已在您的第二条语句中完成

(a > b ? g = a : (g = b));

: ? 的最后一个操作数 g = b 有一个左值 g,这就是为什么它是正确的。

或者你可以这样做

g = a > b ? a : b

关于c - 条件运算符中使用的赋值语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17906235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com