我學到了----當默認的促銷活動中踢:使用默認參數提升究竟何時預期的參數類型是未知的,這是當有說沒有原型或者當爭論是可變的。參數提升的要求
但是一個例子困惑我的是:
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;
}
它在上面的例子中cleard:調用主FUNC時,就沒有必要推進參數a和b,但輸出顯示&一= & b +4不是& a = & b + 1。如果沒有促銷發生,爲什麼兩個CHAR參數之間有4個字節?
您可以提供第一段的來源嗎?它在哪裏說呢? – 2010-05-31 11:51:48
C專家編程----彼得林登 P207第8章 其中隱式類型轉換髮生在參數passing.Under K&R C,因爲函數的參數是一個表達研究的另外的地方,類型提升發生在那裏。在ANSI C中,如果使用原型,參數不會被提升;否則,他們是。擴大的參數被裁減到它們在被調用函數中聲明的大小。 – HaoCheng 2010-05-31 12:08:21