[笔试面试]对x++和++x的理解
首先看一段程序:
int main(void)
{
int x = 3;
printf("x=%d, x++=%d, x=%d\n",x, x++, x);
printf("x=%d, ++x=%d, x=%d\n",x, ++x, x);
printf("x=%d, x++=%d, x=%d\n",x, x++, x);
}
执行结果:
x=4, (x++)=3, x=4
x=5, (++x)=5, x=5
x=6, (x++)=5, x=6
1、x++是整体先返回x当前的值即(x++)=3,然后再执行++操作,执行完++操作之后x就=x+1了,所以这里x=4了。这里是因为x++的优先级比较高,所以先执行x++之后,再执行打印操作。
2、++x是先对x执行++操作即x=x+1,之后再整体返回执行完++操作之后的值,上步操作x=4,所以这里x=5,然后此时的x也=x+1了。显然这里的++x的优先级也是比一般操作要高的,所以这里仍然是先执行++x,后执行打印操作。
分解‘i=x++;’语句:
①i=x;
②i=i+1;
此后,x不变而i比x大1。然而当再次使用或者引用到x的值的时候,x的值就已经执行过++操作了,所以x就=x+1了
分解‘i=++x;’语句:
①x=x+1;
②i=x;
此后x=i=原来的“x”+1。