c - 为什么我会收到 lValue 错误?

标签 c

我是 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/

相关文章:

c - 未初始化的变量/指针成为定义或声明?

c++ - 无限循环 - 顶部还是底部?

c++ - 加载到缓存时数据对齐

java - 将 char 数组从 java 返回到 C - JNI

C - 将非字母字符读取为字边界

c - 两个字符的总和

c - realloc() 无效的 nxt 大小

c - size_t (SIZE_MAX) 的最大值是否相对于其他整数类型定义?

c - 冒泡排序需要很长时间然后出现段错误

c - 在函数实现中传递默认参数