2012-01-11 7 views
7

According to cppreference.com, the C++ static_cast operator's level of precedence is 2static_castのような演算子の優先度はなぜですか?

これらのレベルはなぜ定義されていますか?何らかの理由で考えることができません。誰かが例を挙げることはできますか?優先の

+0

優先順位がない場合、コードは非確定的になります。 – RageD

+0

優先レベル2は、偶然にも機能アプリケーションの優先順位と同じですか?そして、これの原因は何ですか? –

+0

+1:合理的に言えば公正な質問です。 –

答えて

4

標準では優先レベルは定義されていません。これらは文法から導かれたです。

他の構文上の機能と同様に、static_castにはこの文法の場所があります。その使用には括弧が必要なため、オペランド式は曖昧になることはありませんが、文法自体の意味は無意味ではなく、文法から優先レベルを引き出すことは意味がありません。したがって、標準はここで何も狂っていません。

あなたが引用したソースがstatic_castの優先レベルを記載していることは無意味です。 が間違っているのはではありません。

+2

+1、 ) –

3

C++キャスト演算子のレベルはこのように述べ

2ですか?標準では演算子の優先順位は定義されていません。これは、文法をBNFのような表記法で定義します。

+1

http://en.cppreference.com/w/cpp/language/operator_precedence –

+1

@ChristianAmmer: 'cppreference.com'は標準ではありません。だからこのページを書いた人に相談してください。正式に 'static_cast'は' .'、 ' - '、 '[]'などと一緒に* postfix-expression *であるので、彼はこのようにしたと思います... – ybungalobill

関連する問題