我試圖使用操作符「......」,但得到的煩惱:獲取垃圾...
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')。 '...'實際上是函數參數列表語法的一部分,它表明將會有未初始化的參數跟在 –