¿Por qué el compilador decide que 2.3 es doble y no decimal?
¿Por qué el compilador decide que 2.3 es doble, por lo que este código no se compilará?
decimal x;
x = 2.3; // Compilation error - can not convert double to decimal.
x = (decimal) 2.3 // O.k.
Por qué el compilador no piensa así:
Quiere obtener un decimal, me da un valor que puede ser decimal, ¡así que es decimal!
Y por qué esto no recibe un error de compilación:
short x;
x = 23; // O.K.
¿Quién dijo que 23 no es un int?