According to cppreference.com, the C++ static_cast
operator's level of precedence is 2
为什么这些级别甚至被定义?我想不出任何理由。任何人都可以提供一个例子吗?
答案 0 :(得分:4)
标准没有定义优先级;这些可以从语法中派生。
与任何其他语法特征一样,static_cast
在此语法中占有一席之地。因为它的使用需要括号,所以它的操作数表达式永远不会是模糊的,但这只意味着从语法中打扰它的优先级是没有意义的,而不是它在语法本身中的位置是没有意义的。因此,标准在这里没有什么疯狂的。
没有意义的是,您引用的任何来源都列出了static_cast
的优先级。它不是错误的,它只是毫无意义。
答案 1 :(得分:3)
谁说这个?标准没有定义运算符优先级。它以类似BNF的符号定义语法。C ++强制转换运算符的优先级为2