小编Kha*_*led的帖子

va_arg( , double) 每次返回无效值

当我使用 va_arg(ap,double) 运行此示例程序时,我发现 va_arg 返回无效数据,如 0 而不是 3 或 1.2 而不是 1,这样如果我传递不带 .00 的整数值而不是 double 格式,它会得到垃圾数据(即 3 而不是 3.00)!!!

#include <stdio.h>
#include <stdarg.h>
void func(int s){
    printf("%s: %d\n",__func__,s);
}

void var(int count,...){
    va_list ap;
    va_start(ap,count);
    double a = va_arg(ap,double);
    printf("%f\n",a);
    va_end(ap);

}

void main(void ) {
    printf("%s,%d,%s\n",__FILE__,__LINE__,__DATE__);
    func(__LINE__);
    var(1,3);
    var(1,1.2);
    var(1,1);

}
Run Code Online (Sandbox Code Playgroud)

输出是:

try.c,24,Sep 25 2012
func: 25
0.000000
1.200000
1.200000
Run Code Online (Sandbox Code Playgroud)

c arguments

5
推荐指数
1
解决办法
1874
查看次数

标签 统计

arguments ×1

c ×1