首页  >  文章  >  后端开发  >  所有可变参数函数都会将浮点数参数增加一倍吗?

所有可变参数函数都会将浮点数参数增加一倍吗?

Patricia Arquette
Patricia Arquette原创
2024-11-19 00:06:02523浏览

Do All Variadic Functions Promote Float Arguments to Double?

可变参数函数在 printf() 中将浮点参数提升为 Double

在 C 和 C 中, printf() 函数是一个可变参数函数它需要可变数量的参数。 printf() 的一个特殊行为是,当传递 float 参数时,它会在函数接收之前转换为 double。这就提出了一个问题:所有的可变参数函数都会将 float 参数提升为 double 吗?

答案:

是的,C 和 C 中的可变参数函数将 float 参数提升为 double。

理由:

此行为是指定的在 C99 和 C 标准中。 C99 标准草案规定,对于可变参数函数,“具有 float 类型的参数将提升为 double”。类似地,C 标准规定“要进行浮点提升的浮点类型,参数的值在调用之前转换为提升的类型。”

此提升背后的基本原理是保持与 K&R C 标准的兼容性,该标准要求在没有原型声明的情况下将 float 参数提升为 double。尽管并不总是理想的,但出于向后兼容性的原因保留了这种兼容性。

以上是所有可变参数函数都会将浮点数参数增加一倍吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn