任何人都可以帮我理解以下代码的输出是3 2 15
吗?
我希望输出为:2 2 15
,因为
a[1]
,1
将获得预先递增,i
将被分配2
,j
也将被分配2
,因为后期增量已完成,m
时,a[i++]
应为a[2]
,即15
,因为后期增量已完成,m
应分配{{1} }}。如果我错了,请帮助我。
15
答案 0 :(得分:4)
int a[5]={5,1,15,20,25};
将a[1]
增加到2
,并将i
设置为
i=++a[1];
将j
设为a[1]
(2),然后将a[1]
增加为3
j=a[1]++;
将m
设置为a[i]
(a[2]
或15),然后将i
增加为3
m=a[i++];
答案 1 :(得分:1)
i=++a[1]; /* a[1] = 1 and you have a pre-increment so */
i = 2;
j = a[1]++; /* a[1] = 2 and post-increment so j = 2 */
j= 2
m=a[i++]; /* m = a[2] = 15 and `i` is incremented later i = 3 */
m = 15
i = 3
So i=3 j = 2 and m = 15
答案 2 :(得分:0)
答案 3 :(得分:0)
a[1]=1;
i=++a[1]; //a[1] is pre-incremented by 1 so i=2;
j=a[1]++; // a[1] is post incremented by 1 so j=2;
m=a[i++]; // i is post incremented by 1 so m =a[2] so m=15
// as i was post incremented so i=2+1 in next step.
答案 4 :(得分:0)
i=++a[1]; ==> ++a[1] == 2
i
获取数组a[1]
的预增量值,即2
j=a[1]++; ==> a[1]++ == 2
同样,j
变为2
,但后期会增加。
m=a[i++]; ==> a[3] == 15 /* Here i became 3*/
此处i
已经2
增加1
成为3
,后者在下一个语句中递增,结果m
被赋予a[2]
1}}这是15
。
答案 5 :(得分:0)
你阵列的第二个人是1。 所以做i = ++ a [1];转换为i = ++ 1;。 这是2。 J是同样的事情(在这种情况下)。 然后你用“i”取两个数组的第二个值(15),然后你将一个加到“i”。 导致i = 3,j = 2且m = 15.
注意:i = ++ 1;只是为了想象正在发生的事情,这不应该也不能使用。