为什么像static_cast这样的运算符有一定的优先级

Why is there a level of precedence for operators such as static_cast?

本文关键字:运算符 优先级 static cast 为什么      更新时间:2023-10-16

根据cppreference.com,C++static_cast运算符的优先级为2。

为什么还要定义这些级别?我想不出有什么理由。有人能举个例子吗?

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

像任何其他语法特征一样,static_cast在这个语法中有一席之地。因为它的使用需要括号,所以它的操作数表达式永远不会模棱两可,但这只意味着从语法中推导它的优先级没有意义,而不是说它在语法中的位置本身没有意义。因此,标准在这里没有做任何疯狂的事情。

毫无意义的是,无论你引用什么来源,都列出了static_cast的优先级。这并不是错误的,只是毫无意义。

C++cast运算符的优先级为2

谁说的?该标准没有定义运算符优先级。它用类似BNF的表示法定义语法。