我试图使用操作符“......”,但得到的烦恼:获取垃圾...
void Func(int diff, CTester* pcTester, int params ...)
{
va_list ap;
va_start(ap, params);
for(int i = 0; i < params; i++) {
int val = va_arg(ap, int);
cout << "[" << i << "] = " << val << "\n";
if (diff > val) {
// some logic
}
}
va_end(ap);
}
我这样调用函数功能:
Func(1359, pcTester, 10, 20, 30, 40);
我希望在控制台看到的版画[0] = 10 [1] = 20 [2] = 30 [3] = 40 但我发现了太多的打印:
[0] = 20
[1] = 30
[2] = 40
[3] = 4197568
[4] = 26221600
[5] = 0
[6] = 4196640
[7] = 4197568
[8] = 1152895024
[9] = 0
正如你所看到的我有e 10打印(而不是4)并且第一个值(10)不在列表中
我在做什么错?
你做'对于int i = 0;我
代码中的'...'不是运算符(操作符在其他表达式上运算以产生另一个表达式,例如' +'可以在'2'和'3'上运行给出'5')。 '...'实际上是函数参数列表语法的一部分,它表明将会有未初始化的参数跟在 –