在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(使用前将#替换为@)