我学到了----当默认的促销活动中踢:使用默认参数提升究竟何时预期的参数类型是未知的,这是当有说没有原型或者当争论是可变的。参数提升的要求
但是一个例子困惑我的是:
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