这个输出背后的过程是什么?

时间:2014-11-23 22:04:23

标签: c

当我评论语句2和3时,i的值为2,但是当我不知道时,i变为3.为什么会这样?

#include <stdio.h>
int main()
{
  int a[5]={5,1,15,20,25};
  int i,j,k=1,m;
  i=++a[1];   //Statement 1               
  j=a[1]++;   //Statement 2
  m=a[i++];   //Statement 3

  printf("%d %d %d",i,j,m);
  return 0;
}

3 个答案:

答案 0 :(得分:0)

m=a[i++]会导致i加1。 i++部分增加i

答案 1 :(得分:0)

在声明3中,您的代码正在增加i

的值
m = a[i++];

这更容易被注意到你将它分解为以下两行:

m = a[i];
i++;

注意:订单很重要!由于这是后递增(i++,而不是++i),因此首先使用i的值,然后递增。

答案 2 :(得分:0)

statement 1: i = a[1] + 1之后,这意味着您要向a[1]添加1,然后将该值存储在i

i = 2 ; a[1] = 2'
statement 2: j = a[1]++之后

表示您向a[1]添加1,即2 + 1

j = 2; a[1] = 3;

statement 3: m = a[i + 1]之后,这意味着您要为索引值添加1 我已经等于2,因此您m = a[2+1] 15 i++,但由于您有[{1}}该操作仍然预先添加i i =4

m = 15; i = 4; thus a[i] = 20