Я узнал от ---- Относительно того, когда запускаются продвижения по умолчанию: продвижения аргументов по умолчанию используются именно тогда, когда ожидаемый тип аргумента неизвестен, то есть, когда нет прототипа или когда аргумент является переменным.
Но меня смущает пример:
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;
}
Понятно, что в приведенном выше примере: при вызове func в main нет необходимости продвигать аргументы a и b, но вывод показывает & a = & b +4, а не & a = & b + 1. Если продвижение не произошло, почему 4 байта между двумя аргументами CHAR?