我从----关于什么时候开始默认提升:当参数的预期类型未知时使用默认参数提升,也就是说,当没有原型或参数是可变参数时。
但是一个让我困惑的例子是:
void func(char a, char b)
{
printf("a=%p,b=%p\n",&a,&b);
}
int main(void)
{
char a=0x11,b=0x22;
func(a,b);
return 0;
}
在上面的例子中很清楚:在main中调用func时,不需要提升参数a和b,但是输出显示&a = &b +4而不是&a = &b+1。如果没有提升,为什么两个 CHAR 参数之间有 4 个字节?