这是C语言中的代码,它产生了这个错误:
错误:左值是赋值的左操作数
代码:
#include <stdio.h>
int main()
{
int m =4 ; int n =5;
int c=0;
m>n?c=40: c=20;
printf("%d",c);
}
但是当我在三元运算符中使用括号时,它生成的输出没有错误。
#include <stdio.h>
int main()
{
int m =4 ; int n =5;
int c=0;
m>n?(c=40): (c=20);
printf("%d",c);
}
输出:20
为什么会发生这种情况?
m>n?c=40: c=20;
你的表达式与下面的相同
(m > n ? c = 40 : c) = 20;
((m > n) ? (c = 40) : c) = 20;
可能使错误更加明显。
你用错了。写
c = (m > n) ? 40 : 20;