가변 인수가 포함 된 작은 C 프로그램을 작성했습니다. 아래를 참조하십시오 : -가변 인수가있는 함수 - 별난 출력
#include <stdio.h>
#include <stdarg.h>
double calculateAverage(int num,...)
{
va_list argumentList;
double sum=0;
int i;
va_start(argumentList,num);
for(i = 0; i < num; i++)
{
sum += va_arg(argumentList,double);
}
va_end(argumentList);
return(sum/num);
}
int main()
{
printf("%f\n",calculateAverage(3,1,2,3));
printf("%f\n",calculateAverage(4,2,4,6,8));
printf("%f\n",calculateAverage(4,2.0,4.0,6.0,8.0));
printf("%f\n",calculateAverage(3,1,2,3));
}
출력은 다음과 같습니다 내가 특별히 소수점으로 그들을 대표 할 때
0.000000
0.000000
5.000000
5.333333
만
calculateAverage(4,2.0,4.0,6.0,8.0)
, 즉 예상 출력을주고있다.
va_arg(argumentList,double)
숫자를 안전하게 2 배로 올리면 안됩니까?calculateAverage(3,1,2,3)
은 2 개의 다른 장소에서 2 개의 결과를 어떻게 낼 수 있습니까? 나는 '정의되지 않은 행동'영역 안에 있습니까? 그렇다면 어떻게?
gcc 버전 4.8.1을 사용하고 있습니다. 당신이 double
로 해석하려고하기 때문에
또는 형식 캐스트 수가 많지 않고 가독성을 높이기 위해 숫자에 소수 자릿수를 추가 할 수 있습니다. 예 : 3 -> 3.0 –
@PatTeen - 짧고 달콤합니다. – Sadique