#include<stdio.h>
int main(){
int array[10] = {3,0,8,1,12,8,9,2,13,10};
int x,y,z;
x =++array[2];
y =array[2]++;
z =array[x++];
printf("%d\t%d\t%d\n",x,y,z);
return(0);
}我猜这个输出将是9,9,1或something(Actually不确定)
但这件事在被强暴时爆发了
10,9,10
PS:原谅我,我是个菜鸟。
发布于 2020-04-16 09:13:25
制作表格是有用的:
statement x y z array[2]
-------------------------------------
? ? ? 8
x = ++array[2] 9 ? ? 9
y = array[2]++ 9 9 ? 10
z = array[x++] 10 9 10 10顺便说一句,在我自己的代码中,我从不使用增量前后操作的值。这使得逻辑更难理解。下面是一个在表达式中没有副作用的重写版本:
#include <stdio.h>
int main(void)
{
int array[] = {3, 0, 8, 1, 12, 8, 9, 2, 13, 10};
int x, y, z;
array[2]++;
x = array[2];
y = array[2];
array[2]++;
z = array[x];
x++;
printf("%d\t%d\t%d\n", x, y, z);
return 0;
}发布于 2020-04-16 07:35:59
以下是一步一步的值:
int array[10] = {3,0,8,1,12,8,9,2,13,10};
int x,y,z;
x = ++array[2]; // array[2] becomes 9 before assignment to x
// x:9 array[2]:9
y = array[2]++; // array[2] becomes 10 after assignment to y
// x:9 y:9 array[2]:10
z = array[x++]; // z becomes array[x] (last element)
// x:10 y:9 z:10https://stackoverflow.com/questions/61244734
复制相似问题