为什么 arr[i++] 与 arr[i]++ 会这样做?

Why does arr[i++] vs arr[i]++ do?

本文关键字:arr 这样做 i++ 为什么      更新时间:2023-10-16

为什么下面的第一个代码打印出 15,而不是 20?

     #include <iostream>
    using namespace std;
     int main(){
     int arr[] = {10,15,20,15,30};
     for(int i =1; i<3;i++){
     cout<<arr[i++];
      }
   }

以及为什么此代码打印出 15 20。

    #include <iostream>
    using namespace std;
    int main(){
      int arr[] = {10,15,20,15,30};
      for(int i =1; i<3;i++){
      cout<<arr[i]++;
      }
     }

在第一个代码中,循环从 1 开始。它指向元素 15(因为数组索引从 0 开始(。

在 print 语句中,值 i 递增,因此现在 i 位于索引 2(值 20(。现在控件到达 for 循环的"增量部分"。i 的值现在增加到 3。

现在控制检查循环的条件,循环终止。

在第二个代码中,您只需递增数组索引中的值(索引不会递增(。尝试在此之后添加另一个打印语句。你会得到 1621

 for(int i =1; i<3;i++){
     cout<<arr[i++];
 }

但是当你在循环中也递增它时,第一次,I 将初始化为 1,然后在循环中,它将打印 a[i] 的值并递增 i 的值,现在是 2,循环迭代结束,这意味着你用作循环中第三个参数的 i++ 将再次递增 i 的值。 现在它变成 3,3 不小于 3,条件变为假,它不打印任何内容。