楼主既然说了是VC6, 那么问题当然不是short的长度会随编译器变化.真正的原因是:printf的原型是: int printf(const char*, ...);它只指定了第一个参数的类型.当你调用这种变参函数(参数个数可变的函数)时, 若传入的实参是被调函数原型的可变部分(即三个点表示的部分), 则实参会进行如下的自动转换:1 若实参为比int窄的类型, 则会自动提升为int2 若实参是float型, 则会自动提升为double3 若实参是int,long(不管有无符号), 则保持不变因此, 你的 printf("%d,%x,%o,%u",i,i,i,i); 完全等价于printf("%d,%...
|