dco*_*r11 1 c ternary-operator lvalue
visual studio不报告此程序的任何错误,而turbo c/c ++表示'函数main中需要左值'
int main()
{
int a=10,b;
a>=5?b=100:b=200;
printf("%d",b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
避免错误:a> = 5?b = 100:(b = 200);
为什么会这样?说明.
在C++中,三元条件运算符将赋值表达式作为其第三个操作数,因此您的表达式被理解为:
(a >= 5 ? b = 100 : b) = 200;
Run Code Online (Sandbox Code Playgroud)
在"真实"的情况下,这相当于:
b = 100 = 200;
Run Code Online (Sandbox Code Playgroud)
这又从右到左分组,即:
b = (100 = 200);
Run Code Online (Sandbox Code Playgroud)
这显然没有意义.
你的意思是:
if (a >= 5) { b = 100; } else { b = 200; }
Run Code Online (Sandbox Code Playgroud)
你不需要表达; 声明完全没问题.另外,正如Michelle建议的那样:
int b = a >= 5 ? 100 : 200;
Run Code Online (Sandbox Code Playgroud)
请注意,三元条件运算符在C中是不同的,尽管它看起来很相似!
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |