我发现在定义可变参数函数的时候,float类型得不到正确的结果,查了资料发现如下规则:
``参数默认晋级" 规则适用于在可变参数中的可变动部分: 参数类型为 float 的总是晋级 (扩展) 到 double, char 和 short int 晋级到 int。所以 va_arg(arpg, float) 是错误的用法。应该总是用 va_arg(arpg, double)。 同理, 要用 va_arg(argp, int) 来取得原来类型是 char, short 或 int 的参数。基于相同理由, 传给 va_start() 的最后一个 ``固定" 参数项的类型不会被晋级。
记录下来免得以后忘了!