一連のintを加算し、合計を返す単純な可変個引数関数を作成しています。私はそれがどのように機能するかを理解するのに少し問題があり、私のコードは正しい方向に進んでいると感じていますが、私のコードは機能していないようです。(以下に投稿)この関数の仕様は、少なくとも1つのパラメーターを取り、最後のパラメーターは常にゼロであるというものです(メインで呼び出されるように)。また、自分のマシンに基づいて、探している出力が必ずしも得られるとは限らないと言われました。これは、ご想像のとおり、状況をさらに複雑にします。Sum()関数を修正するための支援をいただければ幸いです。
編集:これは、stdarg.hヘッダーを使用せずに実行されることになっているため、va_arg関数は使用されません。
int Sum(int a, ... ) {
int sum = 0, *addy = &a;
while (*addy) {
sum += *addy;
addy += sizeof(a);
}
return sum;
}
int main() {
printf("%d %d %d %d\n", Sum(0), Sum(3, 5, 6, 7, 0),
Sum(7, 2, 42, 3, 5, -4, 0), Sum(-1, 9, 12, 123, -213, 42, 7, 2, 0));
}
//Expected output: 0 21 55 -19
//My output: 0 32770 32770 32776