(int) + 4*5;
なぜこれが(値を含む型を追加する)可能なのですか? (g ++とgccで試しました。)
私はそれが意味をなさない(そして効果がない)ことを知っていますが、なぜこれが可能であるのか知りたいのです。
ここの+は 単項+演算子 であり、 二項加算演算子 ではありません。ここでは何も起こりません。
+
また、構文(int)は型キャストに使用されます。
(int)
そのステートメントを次のように読み直すことができます
(int) (+ 4) * 5;
これは次のように解析されます
((int) (+ 4)) * (5);
それは言う、
4
int
5
これは(int) (- 4) * (5);に似ており、単項演算子の使用法がよく知られています。
(int) (- 4) * (5);
あなたの場合、単項+とintへのキャスト-どちらも冗長です。
これは((int)(+4)) * 5として解釈されます。つまり、式+4(リテラル4に適用される単項プラス演算子)、Cスタイルのキャストで型intにキャストし、その結果に5を乗算したものです。
((int)(+4)) * 5
+4