【问题标题】:What is this second sentence exactly saying?这第二句话到底在说什么?
【发布时间】:2020-08-25 02:06:44
【问题描述】:

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

我得到了第一句话。有人能解释一下第二句话吗?

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

【问题讨论】:

标签: c char int function-prototypes


【解决方案1】:

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

在声明函数的旧方法中,小于int 的整数参数作为int(或在某些情况下作为unsigned int)传递,float 参数作为double 传递。这主要是因为 C 语言的发展环境和它处理小整数的灵活性。

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

【讨论】:

  • 正是我想要的。你改善了我的敏锐度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2011-05-25
  • 2012-03-07
  • 1970-01-01
  • 2017-03-09
相关资源
最近更新 更多