谁能帮我理解以下代码的输出是 3 2 15
吗?
我期望输出为:2 2 15
因为
- 首先元素
a[1]
即1
将被预递增并且i
将被分配2
, - 然后
j
也将被分配2
因为后增量已经完成, - 对于
m
,a[i++]
应该是a[2]
即15
,因为后递增已经完成并且m
应该被分配15
。
如果我错了,请帮助我。
#include<stdio.h>
int main()
{
int a[5]={5,1,15,20,25};
int i,j,m;
i=++a[1];
j=a[1]++;
m=a[i++];
printf("%d %d %d\n",i,j,m);
return 0;
}
最佳答案
int a[5]={5,1,15,20,25};
将 a[1]
增加到 2
,并将 i
设置为 2
i=++a[1];
将 j
设置为 a[1]
(2),然后将 a[1]
增加到 3
j=a[1]++;
将 m
设置为 a[i]
(a[2]
或 15),然后 递增i
到 3
m=a[i++];
关于c - 得到意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986497/