为什么我收到error: lvalue required as left operand of assignment
为什么我需要左值作为赋值的左操作数?
这里是C代码:
#include <stdio.h>
int main(){
int b, i = 10, d;
i>10?b=15:d=1;
return 0;
}
这样
i>10?b=15:d=1; ^
我使用gcc version 5.4.0 (GCC)
为什么我收到error: lvalue required as left operand of assignment
为什么我需要左值作为赋值的左操作数?
这里是C代码:
#include <stdio.h>
int main(){
int b, i = 10, d;
i>10?b=15:d=1;
return 0;
}
这样
i>10?b=15:d=1; ^
我使用gcc version 5.4.0 (GCC)
你试图分配1到(i>10?b=15:d)
。这将工作在C + +,但不是在C.
那么为什么它没有指出'b = 15' – user123456987
@ user123456987:因为你可以' '(i> 10?b)= 15' - 三元运算符是'? :'。 IOW,“b = 15”的左侧甚至不是一个表达式。 – MSalters
尝试'I> 10?(B = 15):(D = 1);' – BLUEPIXY
@BLUEPIXY我不寻找解决方案,我正在寻找理由“为什么它在'b = 15'“中不是指向?它正在像这样工作:'i> 10?b = 15:(d = 1);' – user123456987
它被解释为'(i> 10?b = 15:d)= 1;' – BLUEPIXY