【发布时间】:2013-07-01 21:19:20
【问题描述】:
我正在阅读 K & R 的书 The C programming Language 来学习 c。它说
由于函数调用的参数是表达式,所以类型转换 当参数传递给函数时也会发生。在里面 没有函数原型,char和short变成int,float 变成双倍。
过去几天我一直在努力理解这条线。我认为这是很重要的一点。无论我在做什么假设,它都不会成为现实。谁能帮我理解清楚?
【问题讨论】:
-
你做了什么假设?
-
我删除了 c++ 标签,因为这没有 C++ 关系,因为 C 和 C++ 是不同的语言。
-
关于 C 函数原型的相关问题的答案中有很好的信息:stackoverflow.com/questions/2575153/…
-
你不应该在范围内没有原型的情况下编写 C 代码,所以这句话应该无关紧要。但是,如果你坚持要写逆行代码,你需要知道,如果你将一个
char或short变量传递给一个范围内没有原型的函数,C 会自动将值转换为int,并将转换float值为double。因此,如果没有原型,somefunc(3.0F)将通过double到somefunc();等
标签: c function arguments type-conversion