我是C语言的新手.我对左值误差有疑问.据我所知,当没有存储Rvalue的permanent-address-bearing-variable时,我们得到一个左值错误.在这里,我可以在左侧看到一个变量.但是,我仍然得到左值误差.有人可以清楚我的左值或使用的运算符的概念.
#include"stdio.h"
void main()
{
int x=10,a;
x<0 ? a = 100 : a = 1000;
printf(" %d",a);
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
这将是
a = x < 0 ? 100 : 1000;
Run Code Online (Sandbox Code Playgroud)
赋值比三元运算符具有更低的优先级,因此它会混乱.
或者这也可行(请记住我之前说的)
x<0 ? (a = 100) : (a = 1000);
Run Code Online (Sandbox Code Playgroud)
编译器如何看待你的?
((x<0) ? a = 100 : a) = 1000;
Run Code Online (Sandbox Code Playgroud)
现在很清楚为什么编译器抱怨lvalue.(三元运算符生成一个rvalue和赋值运算符期望左边的左值)是不是?