1

このプログラムは、一度だけ正しい結果を返します。cstadarg のマクロを使用して、可変数の引数を持つ関数を作成および呼び出す方法を理解しようとしています。

#include <iostream>
#include <cstdarg>
using std::cout;
using std::endl;

int sum(int count, ...)
{

    if(count <= 0)
    return 0;

    va_list myarg_ptr; //create pointer to argument list
    va_start(myarg_ptr, count); // initate pointer to argument list

    int sum(0);

    for(int i=0; i<count; i++)
        sum += va_arg(myarg_ptr, int); // use and increment pointer to arugment list

    va_end(myarg_ptr); // set argument list pointer to NULL 
    return sum;
}


int main(int argc, char* argv[])
{
    cout << sum(9, 11, 22, 33, 44, 55, 66, 77, 6) << endl;
    cout << sum(6, 2, 4, 6, 8, 10, 5) << endl;
    cout << sum(9, 1, 2) << endl;

    std::system("pause");
    return 0;
}

私が得る出力は次のとおりです。

273156986
35
-173256537
Press any key to continue...
4

3 に答える 3