浮点数据类型(5.0)被分配8个字节而不是4个使用C中的sizeof运算符

0 c sizeof

为什么sizeof(5.0)我的机器为float数据类型分配了4个字节,因此返回8作为输出而不是4 ?默认情况下,是否考虑5.0double(内存分配= 8个字节),如果是的话,为什么会这样呢?

小智 6

是.

N1570(最新的C11草案),§6.4.4.2p4:

未填充的浮点常量具有类型double.如果用字母后缀f或者F,它已经输入float.如果用字母后缀l或者L,它已经输入long double.


至于你的" 为什么 "问题,在实践中,float由于其精度非常有限,很少有用,所以这个默认值"有意义".float如果您没有充分的理由(例如非常有限的内存限制),请不要费心使用.如果你真的需要一个float常数,写5.0f.