在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。
热门评论
我简单的讲,
num++ 返回的是自增前的值,
++num 返回自增后的值,
这两种都会对num自增。
对于初学者的我而言,,,有点太深奥了,,,能否简单一点??????
讲得太深奥~~