gpt4 book ai didi

c++ - C/C++ 三元运算符实际上与赋值运算符具有相同的优先级吗?

转载 作者:可可西里 更新时间:2023-11-01 18:04:04 27 4
gpt4 key购买 nike

我查阅过的几乎所有 C/C++ 运算符优先级表都将三元条件运算符列为比赋值运算符具有更高的优先级。然而,有一些表格,例如 wikipedia 上的表格。 ,以及位于 operator-precedence.com 的那个, 将它们置于相同的优先级。它是更高还是相同?

最佳答案

在C++语法中,

assignment-expression:    conditional-expression    logical-or-expression assignment-operator initializer-clause    throw-expressionconditional-expression:    logical-or-expression    logical-or-expression ? expression : assignment-expressioninitializer-clause:    assignment-expression    braced-init-list

可以合并为

assignment-expression:    logical-or-expression    logical-or-expression ? expression : assignment-expression    logical-or-expression assignment-operator assignment-expression    logical-or-expression assignment-operator initializer-clause    throw-expression

如果只看=?:,而忽略?之间的内部表达式: , 这显然赋予了 ?:= 完全相同的优先级。

这与 C 语法不同,在 C 语法中,?: 的左操作数和右操作数都不能将赋值运算符作为其最顶层运算符。

assignment-expression:    conditional-expression    unary-expression assignment-operator assignment-expressionconditional-expression:    logical-OR-expression    logical-OR-expression ? expression : conditional-expression

因此对于 C,赋予它们不同的优先级是有意义的。

也就是说,优先级只是标准实际表述的近似值,您选择的任何优先级都会出现误导性或完全错误的情况。根据您的解释,?: 的内部表达式可能是其中之一,它适合我。

关于c++ - C/C++ 三元运算符实际上与赋值运算符具有相同的优先级吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com