1. ホーム
  2. c++

[解決済み] なぜCやC++では(int)+4*5という表現が許されるのでしょうか?

2023-04-18 07:49:52

疑問点

(int) + 4*5;

なぜ、この (値を持つ型の追加) が可能なのでしょうか?(g++とgccで試しました。)

意味がない(効果がない)ことは分かっているのですが、なぜこれが可能なのか知りたいのです。

どのように解決するのですか?

この + はここで 単項 + 演算子 ではなく 二項加算演算子 . ここでは足し算は行われていないのです。

また、構文 (int) はタイプキャストのために使われます。

この文は次のように読み直すことができます。

(int) (+ 4) * 5;    

としてパースされます。

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

というのがあります。

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

これは (int) (- 4) * (5); に似ていますが、単項演算子の使い方がより親しみやすくなっています。

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