¿Por qué C y C++ permiten la expresión(int)+4*5?
casting language-lawyer (2)
El
+
aquí es un
operador
+
unario
, no el
operador de suma binaria
.
No hay ninguna adición ocurriendo aquí.
Además, la sintaxis
(int)
se utiliza para encasillamiento.
Puedes releer esa declaración como
(int) (+ 4) * 5;
que se analiza como
((int) (+ 4)) * (5);
que dice,
-
Aplicar el operador unario
+
en el valor constante de entero4
. -
encasillado a un
int
-
multiplicar con el operando
5
Esto es similar a
(int) (- 4) * (5);
, donde el uso del operador unario es más familiar.
En su caso, el unario
+
y el lanzamiento a
int
- ambos son redundantes.
(int) + 4*5;
¿Por qué es esto (agregar un tipo con un valor) posible? (probado con g ++ y gcc.)
Sé que no tiene sentido (y no tiene ningún efecto), pero quiero saber por qué esto es posible.
Esto se interpreta como
((int)(+4)) * 5
.
Es decir, una expresión
+4
(un operador más unario aplicado a un literal
4
), convertida al tipo
int
con una conversión de estilo C, y el resultado multiplicado por
5
.