为什么static_cast等运营商有优先级?

时间:2012-01-11 14:41:16

标签: c++ operator-precedence

According to cppreference.com, the C++ static_cast operator's level of precedence is 2

为什么这些级别甚至被定义?我想不出任何理由。任何人都可以提供一个例子吗?

2 个答案:

答案 0 :(得分:4)

标准没有定义优先级;这些可以从语法中派生

与任何其他语法特征一样,static_cast在此语法中占有一席之地。因为它的使用需要括号,所以它的操作数表达式永远不会是模糊的,但这只意味着从语法中打扰它的优先级是没有意义的,而不是它在语法本身中的位置是没有意义的。因此,标准在这里没有什么疯狂的。

没有意义的是,您引用的任何来源都列出了static_cast的优先级。它不是错误的,它只是毫无意义。

答案 1 :(得分:3)

  

C ++强制转换运算符的优先级为2

谁说这个?标准没有定义运算符优先级。它以类似BNF的符号定义语法。