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 引入了十六进制浮点常量,它们遵循类似的规则,只是它们必须以 0x 为前缀并使用 p 指定十六进制指数。十进制和十六进制浮点常量都可以用 f 或 F 后缀表示 float 类型的常量,用 l 或 L 表示 long double 类型,或者不为 double 常量添加后缀。
3.0 是一个double
,而不是一个float
。
doubles
宽度是 s 的两倍float
。
编辑:3.0d 仅在 C# 中