函数自变量转换

调用函数时,如果存在函数声明并包含声明的自变量类型,那么编译器将执行类型检查。 编译器将调用函数提供的数据类型与被调用函数期望的数据类型进行比较,并执行必要的类型转换。 例如,当调用函数 funct 时,自变量 f 将转换为 double,而自变量 c 将转换为 int:
char * funct (double d, int i);
     /* ... */
int main(void)
{
   float f;
   char c;
   funct(f, c) /* f is converted to a double, c is converted to an int */
   return 0;
}
如果调用函数时未显示任何函数声明,或者当表达式在原型自变量列表的变量部分中显示为自变量时,编译器将执行缺省自变量提升或转换表达式的值,然后再将任何自变量传递给该函数。 自动转换由以下部分组成:
  • 将提升整数值和浮点值。
  • 数组或函数将转换为指针。
  • C++ 非静态类成员函数将转换为指向成员的指针。