私は----から学びましたデフォルトの昇格がいつ始まるかについて: デフォルトの引数の昇格は、引数の予想される型が不明な場合、つまり、プロトタイプがない場合、または引数が可変長である場合に正確に使用されます。
しかし、私を混乱させる例は次のとおりです。
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+1 ではなく &a = &b +4 を示します。昇格が行われなかった場合、2 つの CHAR 引数の間に 4 バイトあるのはなぜですか?