我寫了這個功能來計算平均的一些floats.But它在,而在「平均」 function.What問題出在它的最後一行運行時錯誤?功能的變量參數運行時錯誤
#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爲您提供了更好的選擇。 –