0
我要總結X複數,可變數目但是這個代碼返回我:和複數用的參數
-9.3e + 61 + -1.9e + 062i
typedef struct complex{
double real;
double imag;
} complex;
complex sum(int length, ...)
{
va_list param;
va_start(param, length);
complex out = {0, 0};
for(int i = 0;i<length;i++)
{
out.real += va_arg(param, complex).real;
out.imag += va_arg(param, complex).imag;
}
va_end(param);
return out;
}
當我引用real/imag部分時,它會返回正確/成像結果。
主:
int main()
{
complex result;
complex a = {3.1,-2.3};
complex b = {0.5,-3};
complex c = {0,1.2};
result = sum(3,a,b,c);
printf("Sum is %.2g + %.2gi. \n", result.real, result.imag);
return 0;
}
我應該改變什麼,使其工作?
你知道,C處已經有[複數](http://en.cppreference.com/w/c/numeric/複雜)? – 2013-02-27 09:40:58
我知道,但我想自己定義它。 – kelly 2013-02-27 09:46:55
問題是,每次調用'va_arg'時,它會取出一個完整的'complex'結構。既然你每循環調用兩次,你就拿出2個不同的'complex'結構,這是不正確的。 您需要緩存結果並稍後訪問成員。 – nhahtdh 2013-02-27 09:48:44