(int) + 4*5;¿Por qué es posible esto (agregar un tipo con un valor) ? (Probado con g++ y gcc.)
Sé que no tiene sentido (y no tiene ningún efecto), pero quiero saber por qué esto es posible.
El + aquí es un operador + unario , no el operador de suma binaria . Aquí no hay ninguna adición.
Además, la sintaxis (int) se usa para encasillar.
Puede volver a leer esa declaración como
(int) (+ 4) * 5;que se analiza como
((int) (+ 4)) * (5);que dice,
+ en el valor constante entero 4 .int5 Esto es similar a (int) (- 4) * (5); , donde el uso del operador unario es más familiar.
En su caso, el unario + y el cast to int - ambos son redundantes.
Esto se interpreta como ((int)(+4)) * 5 . Es decir, una expresión +4 (un operador más unario aplicado a un 4 literal), convertida para escribir int con una conversión de estilo C, y el resultado multiplicado por 5 .