sizeof float(3.0)vs(3.0f)

kum*_*mar 11 c sizeof

sizeof(3.0)和sizeof(3.0f)有什么区别

我期待他们两个给出相同的结果(sizeof float)..但它的不同.

在32位机器中,gcc编译器,sizeof(3.0f)=> 4 sizeof(3.0)=> 8

为什么这样?

Eug*_*ota 24

因为3.0是双倍的.请参阅C语法浮点类型.

浮点常量可以用十进制表示法编写,例如1.23.科学记数法可以通过添加e或E后跟小数指数来使用,例如1.23e2(其值为123).需要小数点或指数(否则,数字是整数常量).C99引入了十六进制浮点常量,它遵循类似的规则,除了它们必须以0x为前缀并使用p指定十六进制指数.十进制和十六进制浮点常量都可以用f或F作为后缀来表示float类型的常量,用l或L来表示long double类型,或者为double常量留下unsuffixed.


Azi*_*ziz 10

  • 3.0f是浮点数(4个字节)
  • 3.0是双(8字节)

更多信息


SLa*_*aks 6

3.0是一个double,而不是一个float.

doublesfloats的两倍宽.

编辑:3.0d只在C#中