我知道类似的问题已经在这里多次发布了,我在谷歌和这里搜索并阅读了这些问题的答案,但有些事情我不清楚,现在是:
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}}是为了防止这种情况?
答案 0 :(得分:3)
未修饰的浮点常量是double
值。因此,在:
float x = 1.5;
1.5
是double
值。现在,在这种情况下,即使是最笨拙的编译器也会生成与编写时相同的代码:
float x = 1.5f;
所以在这种情况下,它并不重要。什么时候重要?在计算中使用常量时:
float y = x * 2.3;
使用double
进行乘法,然后将结果转换为float
,与之比较:
float z = x * 2.3f;
使用float
进行乘法运算。在预标准C中,所有浮点计算都在double
中完成,因此区别并不重要,但所有标准C版本都允许对所有操作数float
进行计算。 float
。