(li, int);
t.b = va_arg(li, double);
//t.c = va_arg(li, float);
t.c = va_arg(li, double...);
t.d = va_arg(li, char);
t.e = va_arg(li, unsigned short);//
t.f = va_arg(li, short)...;
t.z = va_arg(li, int);
printf("%p,%p,%p,%p,%p,%p,%p\n", &t.a, &t.b, &t.c,&t.d, &t.z);
...可以参看 "stdarg.h" 中的宏va_start 和va_arg,va_end在x86的情况下的定义 _INTSIZEOF(n) 作用是将字节数不是sizeof(int)整数倍的类型占用空间改为sizeof...所以va_arg对于char,short等实际处理时都是当作int来处理。所以数据在作为不定参数传递到fun函数中时,已经被编译器做过了数据类型提升处理。