为什么一种添加数组所有元素的方法会失败,而类似的方法却成功了

问题描述 投票:0回答:1

我有一系列双打。为了简化示例,我使用长度为 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 时?当数组本身是双精度数组时,为什么我必须将数组的各个元素转换为双精度?

arrays c casting addition
1个回答
0
投票

在队列中:

double sum3 = a[i]+a[i+i]+a[i+2];

a[i+i]
应该是
a[i+1]

© www.soinside.com 2019 - 2024. All rights reserved.