博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

i++和++i的区别小记录

Posted on 2020-07-30 22:38  偶尔不跑调  阅读(152)  评论(0)    收藏  举报

今天看到 https://blog.csdn.net/weixin_39800144/article/details/80749123 和 https://blog.csdn.net/c15158032319/article/details/78209740 中提到关于 i++ 和 ++i 的区别。

自己理解尝试并记录如下。

 

 1     public static void main(String[] args) {
 2         int a = 0;
 3         for (int i = 0; i < 99; i++) {
 4             a = a++;
 5         }
 6         System.out.println("a=" + a);
 7 
 8         int b = 0;
 9         int c = 0;
10         for (int i = 0; i < 99; i++) {
11             c = b++;
12         }
13         System.out.println("b=" + b);
14         System.out.println("c=" + c);
15     }

 

运行结果:

a=0
b=99
c=98

 

猜想:

a = a++; 的执行过程也许分如下步骤(假设此时a=0):

1. 将a的值0寄存在一个地方,比如寄存在容器m中;

2. 将a自增,即a++,此时a的值为1;

3. 将容器m中的值0赋值给等式左边的a,即a=0。

 

同理,对于 c = b++; 步骤(假设此时b=0):

1. m = b = 0;

2. b++; (完成后b=1)

3. c = m = 0;

 

结论:

i++:寄存i的值 --> i自增 --> 将寄存的值赋予等号左边(如果有等号);

++i:i自增 --> 寄存自增后的i值 --> 将寄存的值赋予等号左边(如果有等号)。