参考链接: C++ vprintf()
使用vs版本vs2015 64bit win10. ...%c,%d,%d,%d;\n", t.a, t.b, t.c,t.d,t.e,t.f, t.z);
vprintf("%d,%.10f,%f,%c,%d,%d,%d;\n", y);//输出错误...3个本来是传递float,但是在这里如果设置解析成float却导致第三个及第三个参数后的所有参数解析都是错误的,如果将第三个参数改为double类型来解析,发现后面的能全部解析正确。 ...可以参看 "stdarg.h" 中的宏va_start 和va_arg,va_end在x86的情况下的定义 _INTSIZEOF(n) 作用是将字节数不是sizeof(int)整数倍的类型占用空间改为sizeof...所以va_arg对于char,short等实际处理时都是当作int来处理。所以数据在作为不定参数传递到fun函数中时,已经被编译器做过了数据类型提升处理。