这里主要说明的是使用va_arg
,va_start
,va_end
宏得到的不定参数。
主要坑爹的地方在于,va_arg
这个宏的第二个参数——取出的数值类型,必须是int或者double,而不能是float,char等。如果你在调用函数的时候,char,unsigned char等实数会转化为int,而float会转化为double:
|
|
这里如果第7行改成va_args(args, float)
会得到乱七八糟的数据。
还有一个坑爹的地方在于,如果你的参数像上面一样使用的是double,那么:
|
|
这种调用是错的,你必须明确指出你给的参数是浮点数(只需要至少给出一个即可):
|
|