C语言中关于自动升级函数类型
程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void pound(int n);//ANSI函数原型声明
int main(void)
{
int times = 5;
char ch = '!'; //ASII是33
float f = 6.0f;
pound(times);
pound(ch); //和pound((int)ch);相同,
/*
函数的声明告诉编译器pound()需要一个int类型的参数。
相应的,当编译器执行到pound(ch)表达式时,
会把参数ch自动转换成int类型
*/
pound(f); //和pound((int)f);相同
system("pause");
return 0;
}
void pound(int n)
{
while (n-- > 0)//表达式必须是可修改的变量
printf("#");
printf("\n");
}
问题一: 此代码中为什么第二次调用pound()函数时,char类型会自动升级为int类型。
问题二: 当把函数声明改为void pound()时,第三次函数调用,为什么pound(f)中float类型会自动升级为double类型而导致函数调用失败。
请大神帮下忙。谢谢!







