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类型而导致函数调用失败。
请大神帮下忙。谢谢!