在C语言中将参数传递给变量函数
我用C写了这个简单的变量函数:在C语言中将参数传递给变量函数,c,C,我用C写了这个简单的变量函数: double averageVar(int cnt, ...) { va_list args; va_start(args, cnt); int i; double res = 0; for (i = 0; i < cnt; i++) { res += va_arg(args, double); } res /= cnt; va_end(args); retu
double averageVar(int cnt, ...)
{
va_list args;
va_start(args, cnt);
int i;
double res = 0;
for (i = 0; i < cnt; i++)
{
res += va_arg(args, double);
}
res /= cnt;
va_end(args);
return res;
}
它工作得很好,但可以这样称呼它:
averageVar(2, 4, 7.88);
产生一些胡言乱语,即:-0.000000。似乎我必须传递整数值,后跟.0。为什么会这样?平均风险值(2,4,7.88)第二个参数是int
notdouble
。您需要传递正确的类型参数或强制转换
double averageVar(int cnt, ...)
{
va_list args;
va_start(args, cnt);
int i;
double res = 0;
for (i = 0; i < cnt; i++)
{
res += va_arg(args, double);
}
res /= cnt;
va_end(args);
return res;
}
int main(void)
{
printf("%f\n", averageVar(2, 4.0, 7.88));
printf("%f\n", averageVar(2, (double)4, 7.88));
printf("%f\n", averageVar(2, 4, 7.88)); //wrong parameter type
}
double averageVar(int cnt,…)
{
va_列表参数;
va_启动(args,cnt);
int i;
双res=0;
对于(i=0;i
通常为常量值:
4
-整数类型
4.0f
-浮动类型
4.0
-双类型averageVar(2,4,7.88)
第二个参数是int
notdouble
。您需要传递正确的类型参数或强制转换
double averageVar(int cnt, ...)
{
va_list args;
va_start(args, cnt);
int i;
double res = 0;
for (i = 0; i < cnt; i++)
{
res += va_arg(args, double);
}
res /= cnt;
va_end(args);
return res;
}
int main(void)
{
printf("%f\n", averageVar(2, 4.0, 7.88));
printf("%f\n", averageVar(2, (double)4, 7.88));
printf("%f\n", averageVar(2, 4, 7.88)); //wrong parameter type
}
double averageVar(int cnt,…)
{
va_列表参数;
va_启动(args,cnt);
int i;
双res=0;
对于(i=0;i
通常为常量值:
4
-整数类型
4.0f
-浮动类型
4.0
-双重类型什么是4
?可以用va_arg(args,double)
处理该类型吗?您本质上是在问为什么printf(“%lf”,4)
不起作用。您的函数需要双
参数。在普通类型升级之后,必须提供与该类型匹配的参数。提供一个整数是在欺骗你自己的函数。averageVar(2,4.0,7.88)代码>或averageVar(2,(双)4,7.88)代码>工作什么是4
?可以用va_arg(args,double)
处理该类型吗?您本质上是在问为什么printf(“%lf”,4)
不起作用。您的函数需要双
参数。在普通类型升级之后,必须提供与该类型匹配的参数。提供一个整数是在欺骗你自己的函数。averageVar(2,4.0,7.88)代码>或averageVar(2,(双)4,7.88)由于默认参数,code>works4.0f
无论如何都将升级为double
promotions@M.M事实上-只是想显示数值常量,由于默认参数,格式4.0f
将升级为double
promotions@M.M事实上-只是想显示数值常量格式