【问题标题】:Question about array elements and incrementing in C [duplicate]关于C中数组元素和递增的问题[重复]
【发布时间】:2020-06-01 04:00:22
【问题描述】:

我有这个代码:

#include <stdio.h>

int main(){
   int a[5] = {5, 1, 15, 20, 25};
   int i, j, k = 1, m;
   i = ++a[1];
   j = a[1]++;
   m = a[i++];
   printf("\n%d %d %d", i, j, m);

   return 0;
}

输出为:3 2 15。
这是为什么? ++a[1] 不应该是 2,a[1]++ 是 2,a[i++] 应该是 20,因为它是索引 3 处的 a?
那为什么输出不是 2 2 20。

谢谢!

【问题讨论】:

    标签: c


    【解决方案1】:

    当评估a[i++] 时,i 的值为2。所以这个表达式的a[2]一样,就是15。这个表达式的副作用i的后增量;这个副作用会将i 增加到3 的值,并在15 的表达式值被评估后生效

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 2011-02-26
      • 2013-03-18
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2012-11-11
      相关资源
      最近更新 更多