Desde que empecé a Java que ha sido muy agravante para mí que no soporta conversiones implícitas de tipos numéricos a los booleanos, por lo que no puede hacer cosas como:¿Por qué Java y C# no tienen conversiones implícitas a boolean?
if (flags & 0x80) { ... }
vez que tiene que pasar por esta locura :
if ((flags & 0x80) != 0) { ... }
Pasa lo mismo con null y objetos. Todos los demás lenguajes tipo C que conozco, incluido JavaScript, lo permiten, así que pensé que Java era simplemente idiota, pero acabo de descubrir que C# es el mismo (al menos para los números, no sé sobre null/objects): http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
Microsoft lo cambió a propósito desde C++, entonces ¿por qué? Claramente me falta algo. ¿Por qué cambiar (lo que pensé que era) lo más natural del mundo para que sea más largo escribir? ¿Qué demonios está mal con eso?
No es una locura, simplemente no es lo que está acostumbrado. – ColinD
'si (estado = CODE_RED) launch_nuclear_missiles();' –
la verdadera pregunta es, ¿por qué lenguajes como C permiten la locura de conversión implícita a Boolean :) – Oak