我是一名初学者,正在学习C语言。今天我学会了“?”操作符,它是if-else语句的简写形式。然而,当我执行下面的代码时:
int b;
int x;
b=3<2?x=12:x=34;
我遇到了一个错误:“error: lvalue required as left operand of assignment”。我不明白为什么会出现这种情况。在我的理解中,程序首先将34分配给x,然后将x的值(即34)赋值给b。 另一方面,我可以使用以下语句:
int b;
int x;
b=3<2?x=12:(x=34);
没有任何错误。我查看了我的书,但没有帮助。为什么我不能使用第一个语句?我的计算机在尝试做什么?
b = x = (3 < 2) ? 12 : 34;
。 - Jonathan Lefflerb = (3<2?x=12:x) = 34;
这可以解释“需要左值”的错误。 - John D