可变参数函数在 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中文网其他相关文章!