学习笔记分享

分享与展示个人专业知识学习笔记

0%

C语言默认参数提升(default argument promotion)

行为

在参数传递过程中,

charshort被提升为int/ unsigned int

float被提升为double

发生情形

在参数的预期类型未知时,发生默认参数提升

也就是说,当没有原型参数是可变参数时。

背景/产生原因

在 1988 年之前的黑暗时代,经典的“K&R”C 中没有函数原型之类的东西,并且设置了默认参数提升,因为:

  • (a) 本质上“免费”,因为将一个字节放入寄存器并不比将一个字放入寄存器中花费更多。
  • (b)减少参数传递中的潜在错误。第二个原因从来没有完全解决它,这就是为什么在 ANSI C 中引入函数原型是 C 语言中最重要的变化。

参考

创作不易,支持一下吧!