在C/C++ 三元运算符实际上是否具有与赋值运算符相同的优先级?
Luchian Grigore 的回答说这样的情况
a ? b : c = d
将始终被推断为
a ? b : ( c = d )
因为 = 和 ?: 从右到左关联所以
在 C++ 中
k = 21 > 3 ? j = 12 : j = 10;
和
k = 1 > 3 ? j = 12 : j = 10;
两者都很好。
在 C 中
k = 21 > 3 ? 12 : j = 10
返回错误
invalid lvalue in assignment.
上面不应该被推断为(并且不返回错误)
k= 21 > 3 ? 12 : ( j = 10 )
我认为现在它被分组为
k = ( 21 > 3 ? 12 : j ) = 10
这给出了错误,因为在 C(不是在 C++ 中)三元运算符不能返回左值。谁能告诉我在这种情况下如何对运算符进行分组。