关于数组元素和 C 语言递增的问题

  • 本文关键字:问题 语言 数组元素 c
  • 更新时间 :
  • 英文 :


我有这个代码:

#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?
那么为什么输出不是 2 2 20。

谢谢!

当计算a[i++]时,i的值为2。所以这个表达式的值和a[2]一样,是15。此表达式的副作用i的后递增;此副作用将i递增到3的值,并在计算15的表达式值生效。

最新更新