为什么添加数组所有元素的方法失败,而类似的方法成功 [closed]

Why does one method of adding all the elements of an array fail when similar methods succeed [closed]

提问人:rkg125 提问时间:11/15/2023 更新时间:11/15/2023 访问量:48

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

5天前关闭。

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

阵列 C 投射 添加

评论

1赞 Vlad from Moscow 11/15/2023
此表达式中有错别字 a[i+i] a[i+i]+a[i+2];
1赞 Fang 11/15/2023
i+i 仍为零。
0赞 Some programmer dude 11/15/2023
你的任务或练习是什么?例如,不需要显式转换为 to,它只是在代码中增加噪音。(double)a[i]double
0赞 rkg125 11/15/2023
@VladfromMoscow谢谢。我花了 2 个小时来制作一个更大的版本,但我无法发现错别字。将 i+i 更改为 i+1,一切都很好。

答:

1赞 hamza el yousfi 11/15/2023 #1

在行中:

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

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