在线文档教程
C++
应用 | Utilities

va_arg

Va[医]阿格

Defined in header
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...

二次

#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'; }

二次

产出:

二次

0.920258

二次

另见

va_startenables access to variadic function arguments (function macro)
va_copy (C++11)makes a copy of the variadic function arguments (function macro)
va_endends traversal of the variadic function arguments (function macro)

c VA文件[医]阿格

© cppreference.com

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

http://en.cppreference.com/w/cpp/实用程序/Variadic/va[医]阿格