今天在学习运算符的时候,发现了一个非常有意思的现象,关于前置++和后置++的不同之处。
前置++是先给变量+1,然后进行使用
后置++是先使用变量,然后进行+1.
首先先给大家看一段代码,看看大家是否能正确得出结论
int i=0;
int j=0;
printf(“%d %d %d”,i++,i++,i++);
printf(“%d %d %d”,++j,++j,++j);
大家觉得答案是什么呢?可以先自己进行运算,下面我们给出结论:
2 , 1, 0 //后置++
3 , 3, 3 //前置++
是不是和大家想的一样呢?理清楚这些,我们首先需要知道参数的传递是由右向左进行传递的。
后置++
我们先来进行讨论后置++的情况,后置++编译器会生成一个临时空间进行存储,最后返回的也是临时空间的值,下面用图来解释一下
前置++
前置++并没有临时空间,所以直接在j上进行++,但不进行赋值,然后最后进行j的赋值。所以我们看到的是3个3