我有一系列双打。为了简化示例,我使用长度为 3 的数组。我想添加该数组的所有 3 个元素。我通过三种方式做到这一点。 这是要演示的程序。
#include <stdio.h>
int main()
{
double a[3] = {1.,3.,5.};
double sum1 = a[0]+a[1]+a[2];
int i=0;
double sum2 = (double)a[i]+(double)a[i+1]+(double)a[i+2];
double sum3 = a[i]+a[i+i]+a[i+2];
printf("sum1=%f sum2=%f sum3=%f \n",sum1, sum2, sum3);
}
当你运行它时,你会得到
sum1=9.000000 sum2=9.000000 sum3=7.000000
为什么 sum3 会失败,尤其是当它应该等于 sum1 时?当数组本身是双精度数组时,为什么我必须将数组的各个元素转换为双精度?
在队列中:
double sum3 = a[i]+a[i+i]+a[i+2];
a[i+i]
应该是 a[i+1]
。