为了账号安全,请及时绑定邮箱和手机立即绑定

那些年我们曾用过的++(自增)或--(自减)

标签:
Java JavaScript
首先what(是什么?)
   在JavaScript/Java中++和--属于算术运算符,顾名思义用来进行算术运算。
然后why(问什么用?)
   简化代码,方便阅读,就是想偷个懒。你是想用num = num + 1;?还是想用num++;?
最后how(怎么用?)
     1、如果++或--在变量的左边(前面),那么先进行++(自增)或--(自减),再进行其他运算(算术运算(+、-、*、/、%)、赋值运算等);
    2、如果++或--在变量的右边(后面),那么先进行其他运算(算术运算(+、-、*、/、%)、赋值运算等),再进行++(自增)或--(自减);
下面我们通过两个实例更好的理解++和--(以JavaScript为例): 常规操作1:(只做自身++或--)
    //打印1-10
    for(var i=1; i<=10; i++) {
        document.write("i="+i+"<br />");
    }
常规操作2:(自身++或--并赋值给其他变量)
    var num =3;
    var result = 1;
    result = num++;
    document.write("num=" + num + ", result=" + result);//结果:num=4,result=3
非常规操作:(自身++或--赋给自身)
    var num = 3;
    num = num++;//结果:3,问什么不是4?不是先进性其他运算num=num,再进行num++吗?下面解释...
//-------------------------------------------------优雅分割线-------------------------------------------------   
    var num = 3;
    num = num++ +1;//结果:4,问什么不是5?不是先进行其他运算num = num+1,再进行num++吗?
//-------------------------------------------------华丽分割线-------------------------------------------------   
    var num = 3;
    num = num++ + num++;//结果:7
下面对以上结果进行解释: 第一段:
var num = 3; num = num++;
//赋给自身时究竟做了怎样的操作呢?为什么和我们想的不一样?

图片描述
是这样的,会先分配一个临时空间用来存储原来的num值,也就是3,然后在原来的内存空间中进行num++,结果为4。最后执行赋值,把临时空间的值赋给num(内存空间),产生覆盖,结果就变成了3.

第二段:
 var num = 3;  num = num++ +1;

可以这样理解,先看右边的表达式num++ +1分配临时空间来存储原来的num值3,然后同样的在原来的内存空间进行num++,此时num为4。接着操作临时空间的值进行+1操作,值仍然为4,最有赋给原来的空间,最终也为4。

第三段:
var num = 3;  num = num++ + num++;

为前一个num++分配临时空间存储原来的num的值3,进行前一个原来的内存空间中num++,此时num为4。接着为后面的一个num++再次分配临时空间,读取原来的内存空间中num的值4,进行后一个原来的内存空间中num++,此时num值为5,按理说应该是前一个num(4)+后一个num(5)为9,但其实是对临时空间中的num进行操作,结果为7。

点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消