gpt4 book ai didi

c - 为什么这个语句会报错?

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:24 25 4
gpt4 key购买 nike

编译器给出了这个语句的错误。i>=3?b=10:b=5;

error: lvalue required as left operand of assignment

无法弄清楚原因。使用的编译器是 GCC。

最佳答案

这个问题用运算符优先级来解释。按照C语法你的

 i >= 3 ? b = 10 : b = 5;

被C编译器解释为

 (i >= 3 ? b = 10 : b) = 5;

首先,这可能不是您想要的。其次,在 C 语言中,?: 运算符的结果不是左值。你不能给它分配任何东西。因此出现错误消息。

为了更正问题(假设我正确理解您的意图),您要么必须使用大括号

 i >= 3 ? (b = 10) : (b = 5);

或者简单地以更传统的方式重写它

 b = i >= 3 ? 10 : 5;

作为旁注,这恰好是 C 和 C++ 语法之间的差异之一。在 C++ 中,您的原始语句将被解释为 i >= 3 ? (b = 10) : (b = 5) 即使没有显式大括号。最重要的是,在 C++ 中,?: 的结果可以是左值。

换句话说,在 C++ 中,您的原始语句会“按预期”编译和工作,但在 C 中则不然。

关于c - 为什么这个语句会报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656154/

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