首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

va_arg

Defined in header <cstdarg>

?

?

T va_arg( va_list ap, T );

?

?

va_arg宏展开为类型表达式。T的下一个参数。va_listap...

打电话前va_arg,,,ap必须通过调用va_startva_copy,没有任何介入的电话va_end.每次调用va_arg宏修改ap指向下一个变量参数。

如果va_arg中没有更多的参数时调用ap中的下一个参数的类型ap%28升级后%29不兼容T,行为未定义,除非:

  • 一种类型是有符号整数类型,另一种类型是对应的无符号整数类型,并且值在这两种类型中都是可表示的;或
  • 一种类型是指向void另一个是指向字符类型%28的指针char,,,signed char,或unsigned char29%。

参数

ap

-

an instance of the va_list type

T

-

the type of the next parameter in ap

扩展值

中的下一个变量参数ap...

二次

代码语言:javascript
复制
#include <iostream>
#include <cstdarg>
#include <cmath>
 
double stddev(int count, ...) 
{
    double sum = 0;
    double sum_sq = 0;
    va_list args;
    va_start(args, count);
    for (int i = 0; i < count; ++i) {
        double num = va_arg(args, double);
        sum += num;
        sum_sq += num*num;
    }
    va_end(args);
    return std::sqrt(sum_sq/count - (sum/count)*(sum/count));
}
 
int main() 
{
    std::cout << stddev(4, 25.0, 27.3, 26.9, 25.7) << '\n';
}

二次

产出:

二次

代码语言:javascript
复制
0.920258

二次

另见

va_start

enables access to variadic function arguments (function macro)

va_copy (C++11)

makes a copy of the variadic function arguments (function macro)

va_end

ends traversal of the variadic function arguments (function macro)

c VA文件[医]阿格

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com