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

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

(int) + 4*5;

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

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

4b9b3361

Ответ 1

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

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

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

(int) (+ 4) * 5;    

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

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

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

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

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

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

Ответ 2

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