关于前增量与后增量的认识误区

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于前增量与后增量的认识误区相关的知识,希望对你有一定的参考价值。

大学时老师讲C++时说过, x=i++;  与  x=++i  的区别


当时以为很懂了,一个是后增量,一个是前增量

x= i++;  相当于  x=i ;  i=i+1;

x=++i ; 相当于   i=i+1;  x=i ; 

并对这种解释深信不疑。


近日 微信群看到一则题目,甚是困惑,将我之前的理解给颠覆了

var k=5;
for(var i=0;i<10;i++){
    k=k++;
}
console.log(k); // 5
var k=5;
for(var i=0;i<10;i++){
    k++;
}
console.log(k); // 15


发现十分费解,k=k++; 不是相当于 k=k ; k=k+1吗?每循环一次 k 值都变了吗?

结果竟然没变!老师讲错鸟?


应该说老师没讲错,只不过老师只讲了个套路,没并讲出内在。原来,

不会说k=k++是先赋值然后加加,

k= k++ 是先加加了,然后赋值的时候赋的是原来的值;

k=++k 也是先加了,然后赋值为加了之后的值


实际上有个临时变量

k=k++; 相当于
temp=k; // 先用临时变量保存原值
k=k+1;   // 再执行加加
k=temp; // 赋值为


k=++k; 相当于
temp=k; // 先用临时变量保存原值

k=k+1;   // 再执行加加

k=k;       // 赋值为


k=a++; 相当于
temp=a;  // 先用临时变量保存原值

a=a+1;    // 再执行加加

k=temp;  // 赋值为


k=++a; 相当于
temp=a; // 先用临时变量保存原值

a=a+1;   // 再执行加加

k=a;       // 赋值为


技术分享

本文出自 “前端开发学习笔记” 博客,谢绝转载!

以上是关于关于前增量与后增量的认识误区的主要内容,如果未能解决你的问题,请参考以下文章

带你认识数仓的增量备份核心设计

笔记01:前增量后增量i++;++i;

C中的后增量和前增量运算符

如何表示这个基本表达式? [关闭]

Oracle 差异增量和累积增量的区别

Oracle 12 Rman增量备份