这第二句话到底在说什么?
What is this second sentence exactly saying?
Since an argument of a function call is an expression, type conversions also take place when arguments are passed to function. In absence of a function prototype, char and short become int, and float becomes double.
我得到了第一句话。谁能解释一下第二句?
In absence of a function prototype, char and short become int, and float becomes double.
标准C 提供了两种声明函数的方式。称为原型的现代方法声明参数的类型。例如,void foo(char a, float b);
。旧方法不包括参数类型。例如,void foo();
.
在声明函数的旧方法中,小于 int
的整数参数被传递为 int
(或者在某些情况下,作为 unsigned int
)和 float
参数作为 double
传递。这主要是因为 C 语言的发展环境及其处理小整数的灵活性。
如果调用使用原型声明的函数,C 实现会知道参数的类型并将每个参数转换为目标类型。如果调用没有原型声明的函数,C 实现不知道函数定义中参数的真实类型,但它知道窄整数类型必须作为 int
(或 unsigned int
) 和 float
参数必须作为 double
传递。因此,这些类型的任何参数都会根据需要转换为 int
、unsigned int
或 double
。
Since an argument of a function call is an expression, type conversions also take place when arguments are passed to function. In absence of a function prototype, char and short become int, and float becomes double.
我得到了第一句话。谁能解释一下第二句?
In absence of a function prototype, char and short become int, and float becomes double.
标准C 提供了两种声明函数的方式。称为原型的现代方法声明参数的类型。例如,void foo(char a, float b);
。旧方法不包括参数类型。例如,void foo();
.
在声明函数的旧方法中,小于 int
的整数参数被传递为 int
(或者在某些情况下,作为 unsigned int
)和 float
参数作为 double
传递。这主要是因为 C 语言的发展环境及其处理小整数的灵活性。
如果调用使用原型声明的函数,C 实现会知道参数的类型并将每个参数转换为目标类型。如果调用没有原型声明的函数,C 实现不知道函数定义中参数的真实类型,但它知道窄整数类型必须作为 int
(或 unsigned int
) 和 float
参数必须作为 double
传递。因此,这些类型的任何参数都会根据需要转换为 int
、unsigned int
或 double
。