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

大学时老师讲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;       // 赋值为

时间: 2024-10-12 16:11:30

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

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

前阵子看视频课程的时候,就是没有明白前增量.后增量.前减量.后减量那一块,这下子知道咋回事了,需要记录下来,以便日后. var m = 10; var n = 8; alert(++m);   // 11 alert(n++);    // 8 alert(m);       // 11 alert(m);       // 9 前增量就是在执行含有变量m的语句之前计算,后增量自然就是要在执行语句之后再计算,所以代码第四行弹出8,第六行弹出9: 相应的前减量和后减量也是这个道理了. <javas

从赢利前和赢利后分析 提高美国市场APP安装量的技巧

在分析美国应用市场基本国情的基础上,本文结合实战经验,从PR.合作.营销等角度,向有意进军美国市场的APP开发者介绍了赢利前与赢利后提升美国区应用装机量和用户量的技巧和注意事项,希望能为开发者们带来一些启示. App Store 的海量之势有增无减,应用发现变得越来越难了, 因此获取应用装机增量与优质用户不仅变得颇具挑战性,成本也相应地拉高了.其中一个问题就是如何推动应用下载量和用户量?每个人都想知道在美国这块最具吸引力.最有生长空间的市场该怎样做这件事. 过去 3 年中,海豚浏览器团队尝试过许

【转】在rman增量备份中,有差异增量和累积增量的概念

本文转自hougoo的博客 1.概念 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式 累积增量:是备份上级备份以来所有变化的块 因为累积增量是备份上级备份以来所有变化的数据块,所以累积增量需要更多的备份时间,同时需要较小的恢复时间:而差异增量正好相反,它可以备份同级备份以来变化的数据块.所以会减少备份时间,但需要更多的恢复时间.在oracle 9中增量备份需要通过扫描整个数据库的数据块才能知道哪些数据块发生了变化,这是一个代价很大,时间很长的过程,而且由于增量备份

rman差异增量及累积增量的区别

在rman增量备份中,有差异增量和累积增量的概念 1.概念 差异增量(Differential):是备份低级别或者相同级别备份以来变化的所有数据块,顾名思议,也就是要备前期备份以来的差异数据块 若前面的备份同时存在低级别和相同级别,则优先选择备份从最近的低级别(n-1)以来变化的数据块, 若没有n-1级别备份,则选择备份同级别备份以来变化的数据块, 若没有同级别的备份,则备份更低级别以来(n-x)变化的数据 若前面同时有n-1级别和相同级别,则备份相同级别以来变化的数据 累积增量(Cumulat

MySQL第五天(增量备份和增量恢复)

day05一.数据备份与恢复-增量备份和增量恢复a.binlog日志介绍(二进制文件):使用Mysql数据库服务日志文件类型的一种.记录除查询之外的sql命令.默认没启用 查询的sql包括:select desc show 不是查询的命令:insert update delete create drop grant revoke b.启用binlog日志如何启用日志默认存放位置/var/lib/mysql日志默认名称主机名-bin.00000151-bin.000001 (大于500M自动生成0

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

Oracle 差异增量和累积增量的区别 Rman 一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,使用增量备份后就可以不用从头开始备份了,只需要备份自上次已备份之后的数据块开始进行数据备份. Oracle 的增量备份分为差异增量备份(Differential Incremental Backup)和积累增量备份(Cumulative Incremental Backup)两种 . 关于Oracle增量备份级别 在10g之前的版本中,增量备份共有 0.1.2.3.4 五种级别,

9.11、mysql增量备份和增量恢复介绍

1.增量备份: 增量数据是从上次全量备份之后,更新的新数据,对于mysql来说,binlog日志就是mysql的增量数据: (1)按天进行备份: 周一00点全量备份 周二00点全量备份 ...... 01.sql.gz 02.sql.gz ...... 周一增量备份 周二增量备份 ...... mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.index mysql-bin.000004 mysql-bin.000005 m

【算法】 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变

题目:输入一个整形数组,将数组重新排序,使得所有奇数在前偶数在后,并使奇数之间和偶数之间的相对位置爆出不变. 思想:从数组开头开始遍历所有数组.当碰到偶数时,将偶数打包,即记录到目前为止偶数的个数,把这些偶数看成一个整体:当碰到奇数时,将这个奇数与前面的偶数整体对调位置. #include <stdio.h> #include <stdlib.h> void nuo(int *a,int j,int nu)                     //将奇数与前面所有偶数调换位置

ORACLE RMAN备份--差异增量与累积增量的策略实例图

转自原文 ORACLE RMAN备份--差异增量与累积增量的策略实例图 BACKUP 命令在不显式指定的情况下,默认情况下会选择Differential方式,即差异增量备份.不过从恢复效率的角度考虑,Cumulative方式的增量备份表现更好一些,毕竟不需要读取那么多备份集了. 注意: 在10g之前的版本中,增量备份可以有 n 多个级别,从0级.1级.2级……这样顺序排列直到 n 级( n 为小于等于4的正整数). 在10g版本中,Oarcle的官方文档明确指出增量备份只有0和1两种级别(太多增