继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

堂堂堂堂糖糖糖童鞋
关注TA
已关注
手记 14
粉丝 39
获赞 1449
首先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。

打开App,阅读手记
7人推荐
发表评论
随时随地看视频慕课网APP

热门评论

我简单的讲,

num++ 返回的是自增的值,

++num 返回自增的值,

这两种都会对num自增。

对于初学者的我而言,,,有点太深奥了,,,能否简单一点??????

讲得太深奥~~

查看全部评论