va_arg
Va[医]阿格
Defined in header | | |
---|---|---|
T va_arg( va_list ap, T | | |
大va_arg
宏展开为类型表达式。T
的下一个参数。va_list
ap
...
打电话前va_arg
,,,ap
必须通过调用va_start
或va_copy
,没有任何介入的电话va_end
.每次调用va_arg
宏修改ap
指向下一个变量参数。
如果va_arg
中没有更多的参数时调用ap
中的下一个参数的类型ap
%28升级后%29不兼容T
,行为未定义,除非:
- 一种类型是有符号整数类型,另一种类型是对应的无符号整数类型,并且值在这两种类型中都是可表示的;或
- 一种类型是指向
void
另一个是指向字符类型%28的指针char
,,,signed char
,或unsigned char
29%。
参数
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_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文件[医]阿格
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。