El tipo y el tamaño de su variable están bien. Es solo que el compilador tiene algunos tipos predeterminados para literales, esos valores constantes codificados en su programa.
Si solicita sizeof(1)
, obtendrá sizeof(int)
. Si solicita sizeof(2.5)
, obtendrá sizeof(double)
. Esos encajarían claramente en un char y un flotador, respectivamente, pero el compilador tiene tipos predeterminados para sus literales y los tratará como tales hasta la asignación.
Sin embargo, puede anular este comportamiento predeterminado. Por ejemplo:
2.5 // as you didn't specify anything, the compiler will take it for a double.
2.5f // ah ha! you're specifying this literal to be float
¡Salud!
Amigo, deje de agregar y eliminar la etiqueta 'math' para encontrar esta pregunta en la parte superior. – Xeo
intente 13.ff en su lugar y también consulte este enlace http://stackoverflow.com/questions/2331751/does-the-size-of-an-int-depend-on-the-compiler-and-or-processor –
[¿Por qué el valor de coma flotante como 3.14 se considera como el doble de forma predeterminada en MSVC?] (Https://stackoverflow.com/q/4353780/995714) –