gpt4 book ai didi

c - 需要左值作为赋值的左操作数 - 错误? : in C

转载 作者:行者123 更新时间:2023-12-02 15:19:13 26 4
gpt4 key购买 nike

为什么 a<=20? b=10 : c=30;给出左值错误?

error: lvalue required as left operand of assignment

是因为 b=10 和 c=30 是语句而不是表达式吗?

最佳答案

这是因为条件运算符的优先级高于赋值运算符,表达式被解释为

((a<=20)? (b=10) : c)=30;

条件运算符返回的不是左值(N1570 6.5.15,脚注 110),因此程序将发出编译错误。

您可以使用括号来克服这个优先级问题。

a<=20? (b=10) : (c=30);

使用普通的 if 语句应该更好,除非你有如下原因:

  • 打代码高尔夫
  • 试图让你的程序难以阅读
  • 想要使用从表达式返回的内容
if (a <= 20) {
b = 10;
} else {
c = 30;
}

关于c - 需要左值作为赋值的左操作数 - 错误? : in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554014/

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