Почему C и C++ допускают выражение(int)+4*5?




casting language-lawyer (2)

Здесь + это унарный оператор + , а не оператор двоичного сложения . Здесь не происходит никаких дополнений.

Кроме того, синтаксис (int) используется для приведения типов.

Вы можете перечитать это утверждение как

(int) (+ 4) * 5;    

который анализируется как

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

который говорит,

  1. Примените унарный оператор + к целочисленной константе 4 .
  2. приведите к int
  3. умножить с операндом 5

Это похоже на (int) (- 4) * (5); где использование унарного оператора более привычно.

В вашем случае унарный + и приведение к int - оба являются избыточными.

(int) + 4*5;

Почему это возможно (добавление типа со значением) ? (пробовал с g ++ и gcc.)

Я знаю, что это не имеет смысла (и не имеет никакого эффекта), но я хочу знать, почему это возможно.


Это интерпретируется как ((int)(+4)) * 5 . То есть выражение +4 (унарный оператор плюс, примененный к литералу 4 ), приведенное к типу int с приведением в стиле C, и результат умножен на 5 .





language-lawyer