我有这个代码:
#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
的表达式值后生效。