【发布时间】:2012-08-15 01:44:20
【问题描述】:
关于在 GCC 编译器 中编译给定程序:
int main()
{
int a=2,b=3;
(a>1)?b=10:b=50;
printf("%d",b);
return 0;
}
它显示错误 “左操作数需要左值”
但如果我将第 4 行写为 (a>1)?b=10:(b=50);
然后它显示没有编译错误。谁能解释我为什么?
还有它与 if...else... 有何不同?
【问题讨论】:
-
被解析为:
((a>1)?b=10:b) = 50;
标签: c ternary-operator