分配给double的数字的F后缀

Fir*_*gon 4 c c++

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

double i = 1.4f;
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*non 11

C标准的相关引用:

§6.4.4.2第4段

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

第5段

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

第7段

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

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

1.39999997615814208984375
Run Code Online (Sandbox Code Playgroud)

1.4具有价值:

1.399999999999999911182158029987476766109466552734375.
Run Code Online (Sandbox Code Playgroud)