11

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

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

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

为什么这样?

4

3 回答 3

24

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

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

于 2009-08-31T00:58:05.363 回答
10
  • 3.0f 是浮点数(4 个字节)
  • 3.0 是双精度(8 字节)

更多信息

于 2009-08-31T00:59:27.390 回答
6

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

doubles宽度是 s 的两倍float

编辑:3.0d 仅在 C# 中

于 2009-08-31T01:00:01.197 回答