[阅读: 858] 2007-05-17 03:24:08
typedef double data_type;
data_type sum1(data_type data[], unsigned int N)
{
unsigned int i;
data_type sum = 1;
for (i = 0; i < N; i++)
{
sum = sum *data[i];
}
return sum;
}
data_type sum2(data_type data[], unsigned int N)
{
unsigned int i;
data_type sum = 1;
unsigned int NN = N-2;
for (i = 0; i < NN; i+=2)
{
sum *= data[i];
sum *= data[i+1];
}
for ( ;i < N; i++)
sum *= data[i];
return sum;
}
data_type sum2x2(data_type data[], unsigned int N)
{
unsigned int i;
data_type sum1 = 1, sum2 = 1;
unsigned int NN = N-2;
for (i = 0; i < NN; i+=2)
{
sum1 *= data[i];
sum2 *= data[i+1];
}
for ( ;i < N; i++)
sum1 *= data[i];
return sum1 * sum2;
}
sum1, sum2 和sum2x2哪个快一些,为啥?
sum2 比 sum1 快好理解,但是 sum2x2为啥比sum2 快呢?
如果把 data_type 由double换成 int 结果如何?