69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdarg.h>
double sum_series(int num, ...)
{
double sum=0.0, t;
va_list argptr;
va_start(argptr, num);
for( ; num; num--)
{
printf("argptr = %p, *argptr = %10.9f\n", argptr, *argptr);
t = va_arg(argptr, double);
sum +=t;
}
va_end(argptr);
return sum;
}
int main()
{
double d;
d = sum_series(4, 0.5, 0.25, 0.125, 0.06254);
printf("sum of series is %f\n", d);
return 0;
}
root@book-desktop:/work/video_example# cc doublesum.c
doublesum.c: In function ‘sum_series’:
doublesum.c:12: warning: format ‘%10.9f’ expects type ‘double’, but argument 3 has type ‘double *’
root@book-desktop:/work/video_example# ./a.out
argptr = 0xbfef7ac4, *argptr = 0.000000000
argptr = 0xbfef7acc, *argptr = 0.000000000
argptr = 0xbfef7ad4, *argptr = 0.000000000
argptr = 0xbfef7adc, *argptr = 0.000000000
sum of series is 0.937540
[/quote]
可以改为:
printf("argptr = %p, *argptr = %10.9f\n", argptr, *((double *)argptr));
t = va_arg(argptr, double);
这样就对了
root@book-desktop:/work/video_example# cc doublesum.c
doublesum.c: In function ‘sum_series’:
doublesum.c:12: warning: format ‘%10.9f’ expects type ‘double’, but argument 3 has type ‘double *’
root@book-desktop:/work/video_example# ./a.out
argptr = 0xbfef7ac4, *argptr = 0.000000000
argptr = 0xbfef7acc, *argptr = 0.000000000
argptr = 0xbfef7ad4, *argptr = 0.000000000
argptr = 0xbfef7adc, *argptr = 0.000000000
sum of series is 0.937540