私はいくつかのfloatの平均を計算するためにこの関数を書いています。しかし、「平均」関数の最後の行にランタイムエラーがあります。問題は何ですか?可変引数を持つ関数ランタイムエラー
#include <stdarg.h>
#include <stdio.h>
float average(float first , ...)
{
int count = 0;
float sum = 0 , i = first;
va_list marker;
va_start(marker , first);
while(i != -1)
{
sum += i;
count++;
i = va_arg(marker , float);
}
va_end(marker);
return(sum ? (sum/count) : 0);
}
int main(int argc , char* argv[])
{
float avg = average(12.0f , 34.0f);
printf("The average is : %f\n" , avg);
scanf("a\n");
}
私は、さまざまな引数を持つ関数が、価値があるよりも多くの問題を引き起こすことを発見しました。特に、C++を使用する場合、これを回避する方法がより優れています。 –
特にセンチネルとして '-1'を使うのは本当に悪いデザインですが、これは有効な値かもしれません。あなたのすべてのパラメータは同じ型であるはずなので、C++だけでなくCもこれに代わるより良い選択肢を提供します。 –