sizeof float(3.0)vs(3.0f)

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

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

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

为什么这样?

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

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

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

更多信息

3.0是double ,而不是float

doublesfloat的两倍宽。

编辑 :3.0d只在C#中