当混合数据类型相乘时,float 是否总是自动转换为 double?

2024-01-31

在Steven Prata的《C Primer Plus》一书中,有一节是关于类型转换的,其中“基本规则是”一节在规则1中指出:

在 K&R C 下,但在当前 C 下,float 会自动转换为 double。

http://www.9wy.net/onlinebook/CPrimerPlus5/ch05lev1sec5.html http://www.9wy.net/onlinebook/CPrimerPlus5/ch05lev1sec5.html

有人可以解释一下什么吗but not under current C方法? C 是否有自动转换的版本和不自动转换的版本?

我试图了解如果我有一个混合浮点数和双精度数的表达式,我可以依靠 C 在评估时将浮点数提升为双精度数吗?


它必须引用二进制算术运算的结果float * float格式。在 C 操作数的预标准版本中,此类表达式被提升为double结果是double type.

例如,这里引用《C 参考手册》

如果两个操作数都是int or char,结果是int。如果两者都是float or double,结果是double.

在 C89/90 中,这种行为已经改变并且float * float表达式产生float result.

  • 如果任一操作数具有类型长双,另一个操作数转换为长双
  • 否则,如果任一操作数是double,另一个操作数转换为double.
  • 否则,如果任一操作数是float,另一个操作数转换为float.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当混合数据类型相乘时,float 是否总是自动转换为 double? 的相关文章

随机推荐