i++与++i详解

  int i=0,a=0;
 
  a=i++;
  
  0:   iconst_0        //0 入栈    (从常量池中  取出0,放入栈中)
  1:   istore_1   //0 出栈,放到 变量i中
 
  2:   iconst_0
  3:   istore_2
 
  4:   iload_1     //将变量i的值入栈,
  5:   iinc    1, 1     //变量i加1.
  8:   istore_2   //变量i的值出栈,赋给a
 
  5和8即是所谓的先用后加。其实,还是正常的顺序,用的i是 没进行运算之前的i.
 =====================================================
 int i=0,a=0;
 a=++i;
 
 0:   iconst_0
 1:   istore_1
 
 2:   iconst_0
 3:   istore_2
 
 4:   iinc    1, 1
 7:   iload_1
 8:   istore_2
 
  4和7是先加后 。
======================================================= 
  还是看 i和++符号的先后顺序 :i是没加之前入栈,还是加了之后再入栈。
  入栈就是参与运算。(因为有赋值符号)
=================================================
 int i=0;
 i=i++ + ++i;


 0:   iconst_0
 1:   istore_1
 
 2:   iload_1
 3:   iinc    1, 1
 6:   iinc    1, 1
 9:   iload_1
 10:  iadd             //栈中弹出两个值,相加,入栈
 11:  istore_1 
============================================= 
  int i=0;
  i=++i + ++i;
 
  0:   iconst_0
  1:   istore_1
 
  2:   iinc    1, 1
  5:   iload_1
 
  6:   iinc    1, 1   //变量域i,再加1
  9:   iload_1
 
  10:  iadd
  11:  istore_1
=======================================
  总结:在赋值表达式中,遇到 i :    入栈,
                遇到 ++ : 变量i说在的空间值加1.
=======================================
最后总结:
     赋值语句:借助 “栈” 来完成
  ++: 是”变量域“的加。
 
      两者没有关系。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值