" f"浮点数后缀

时间:2014-05-11 15:56:13

标签: c

我知道类似的问题已经在这里多次发布了,我在谷歌和这里搜索并阅读了这些问题的答案,但有些事情我不清楚,现在是:

float x = 1.5; 
float z = 0.0;
z = x + 5.22f;

在此我确信有必要在编号5.22之后添加f,以便编译器不会将其视为double

关键在于我正在阅读的书中作者这样做:

float myvar = 2.55f;

我的问题是:我已经宣布了#34; myvar" float f后缀的目的是什么?double为什么重复?

编译器是否有可能将值2.55视为myvar,当它尝试将值分配给float时,它会将其降级为f,因此{{}的目的1}}是为了防止这种情况?

1 个答案:

答案 0 :(得分:3)

未修饰的浮点常量是double值。因此,在:

float x = 1.5;

1.5double值。现在,在这种情况下,即使是最笨拙的编译器也会生成与编写时相同的代码:

float x = 1.5f;

所以在这种情况下,它并不重要。什么时候重要?在计算中使用常量时:

float y = x * 2.3;

使用double进行乘法,然后将结果转换为float,与之比较:

float z = x * 2.3f;

使用float进行乘法运算。在预标准C中,所有浮点计算都在double中完成,因此区别并不重要,但所有标准C版本都允许对所有操作数float进行计算。 float