我是 C 语言的新手。 我对左值错误有疑问。 据我所知,当没有永久地址承载变量来存储右值时,我们会得到一个左值错误。在这里,我可以在左侧看到一个变量。但是,我仍然得到左值错误。 有人可以澄清我对左值或所用运算符的概念吗。
#include"stdio.h"
void main()
{
int x=10,a;
x<0 ? a = 100 : a = 1000;
printf(" %d",a);
}
谢谢。
最佳答案
应该是
a = x < 0 ? 100 : 1000;
赋值比三元运算符的优先级低,所以它搞砸了。
或者这也行(记住我之前说的)
x<0 ? (a = 100) : (a = 1000);
编译器如何看待你的?
((x<0) ? a = 100 : a) = 1000;
现在很清楚为什么编译器会提示左值。(三元运算符生成一个右值,而赋值运算符期望它的左边有一个左值)不是吗?
关于c - 为什么我会收到 lValue 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093057/