分配给double的数字的F后缀

时间:2012-05-10 14:08:20

标签: c++ c

我知道用f后缀浮点数让编译器知道它是浮点而不是double。在浮子上操作而不是双打时,防止不必要的铸造非常重要。但是在某些代码中,我是由外部公司提供的,例如我见过以下内容:

double i = 1.4f;

现在我想知道的是这种情况会发生什么?编译器是否会默默地忽略'f',它只是对任何东西都没有影响的东西,我可以放心地忽略它?

然后我想知道如果将数字分配给其他地方带有f后缀的双打,那么不仅仅是初始化会是一个不同的情况吗?

2 个答案:

答案 0 :(得分:11)

C标准的相关引用:

§6.4.4.2第4段

  

如果以字母f或F为后缀,则表示类型为float。

第5段

  

浮动常量将转换为内部格式,就像在转换时一样。

第7段

  

浮动常量的转换时转换应该与库函数(如strtod)的字符串执行时转换相匹配,给定适合两种转换的匹配输入,相同的结果格式和默认的执行时间舍入。 / p>

假设IEEE-754数字1.4f产生值:

1.39999997615814208984375

1.4的值为:

1.399999999999999911182158029987476766109466552734375.

答案 1 :(得分:3)

一个好的编译器应该直接将1.4f转换为double。

兼容编译器会将1.4f转换为float格式,然后将值转换为double,然后将值赋给i

顺便说一句,历史上从FORTRAN开始,名为i的变量通常包含整数值。