这第二句话到底在说什么?

问题描述 投票:0回答:1

由于函数调用的参数是一个表达式,所以在将参数传递给函数时也会进行类型转换。在没有函数原型的情况下,char和short变为int,float变为double。

我听了第一句话。有人可以解释第二句话吗?

在没有函数原型的情况下,char和short变为int,float变为double。

c char int function-prototypes
1个回答
0
投票

标准C提供了两种声明函数的方法。现代的方法称为原型,它声明参数的类型。例如,void foo(char a, float b);。旧方法不包括参数类型。例如,void foo();

[在旧的函数声明方法中,比int窄的整数参数作为int传递(或在某些情况下,作为unsigned int传递,而float参数作为double传递。之所以出现这种情况,很大程度上是因为C的开发环境以及它处理小整数的灵活性。

如果调用用原型声明的函数,则C实现会知道参数的类型,并将每个参数转换为目标类型。如果调用没有原型声明的函数,则C实现不知道函数定义中参数的真实类型,但它知道必须将窄整数类型作为int(或unsigned int)和float传递]参数必须作为double传递。因此,根据需要将这些类型的任何参数都转换为intunsigned intdouble

© www.soinside.com 2019 - 2024. All rights reserved.