三元运算符内部的赋值在c中不起作用

为什么这不适用于 C 但适用于 C++?

(0) ? a = 1 : a = 2;

回答

语言在运算符优先级方面存在差异。

在C++ 中,三元运算符与赋值运算符具有相同的优先级,注意

条件运算符中间的表达式(在?and之间:)被解析为好像括号一样:它相对于的优先级?:被忽略。

在C 中,三元运算符的优先级高于赋值。它也有关于中间表达式的相同注释。

这意味着在 C 中,表达式被解析为好像它被括号括起来:

((0) ? (a = 1) : a) = 2;

这是无效的,因为条件表达式不返回 L 值。


以上是三元运算符内部的赋值在c中不起作用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>