(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.
                    
                        c++
                                c
                                casting
                                language-lawyer
                                
                    
                    
                        Ernest Bredar
fuente
                
                fuente

(int)-4*5cppinsightsque ayuda a comprender cómo se ve el código desde la perspectiva del frontend del compilador. También tiene una versión en línea, puede ver lo que dice sobre su ejemplo (el mismo 'paréntesis' que las respuestas que le dieron)+(int)+ 4*5;y-(int)- 4*5;y-+-+-(int)-+-+- 4*5;y menos poéticamente;Respuestas:
El
+aquí es unario+operador , no el operador de suma binaria . No hay nada más sucediendo aquí.Además, la sintaxis
(int)se utiliza para encasillamiento.Puede volver a leer esa declaración como
(int) (+ 4) * 5;que se analiza como
((int) (+ 4)) * (5);que dice,
+operador unario en el valor constante entero4.int5Esto es similar a
(int) (- 4) * (5);, donde el uso del operador unario es más familiar.En su caso, el unario
+y el elencoint, ambos son redundantes.fuente
(+ 4)no es hacer el operando+4, significa aplicar el unario+al operando4, que de hecho no es una operación en el caso del OP, pero podría causar promoción de enteros o decaimiento de matriz en otras circunstancias. Por ejemplo,char c = 0; sizeof +c == sizeof cprobablemente sea falso ysizeof +"a"probablemente no sea 2.42;:-)Esto se interpreta como
((int)(+4)) * 5. Es decir, una expresión+4(un operador unario más aplicado a un literal4), convertido a tipointcon un estilo C y el resultado multiplicado por5.fuente