为什么在三元操作符中使用赋值会产生没有括号的错误?

  • 本文关键字:赋值 错误 操作符 三元 c
  • 更新时间 :
  • 英文 :


这是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;

相关内容

  • 没有找到相关文章