web-dev-qa-db-ja.com

CとC ++が式(int)+ 4 * 5を許可するのはなぜですか?

(int) + 4*5;

なぜこれが(値を含む型を追加する)可能なのですか? (g ++とgccで試しました。)

私はそれが意味をなさない(そして効果がない)ことを知っていますが、なぜこれが可能であるのか知りたいのです。

85
Ernest Bredar

ここの+単項+演算子 であり、 二項加算演算子 ではありません。ここでは何も起こりません。

また、構文(int)は型キャストに使用されます。

そのステートメントを次のように読み直すことができます

(int) (+ 4) * 5;    

これは次のように解析されます

((int) (+ 4)) * (5);    

それは言う、

  1. 整数定数値+に単項4演算子を適用します。
  2. intへの型キャスト
  3. オペランド5と乗算します

これは(int) (- 4) * (5);に似ており、単項演算子の使用法がよく知られています。

あなたの場合、単項+intへのキャスト-どちらも冗長です。

139
Sourav Ghosh

これは((int)(+4)) * 5として解釈されます。つまり、式+4(リテラル4に適用される単項プラス演算子)、Cスタイルのキャストで型intにキャストし、その結果に5を乗算したものです。

39
Igor Tandetnik