作用

递增运算符(++)和递减运算符(--)为对象的加1和减1操作提供了一种简洁的书写形式,这两个运算符还可以应用于迭代器,因为很多迭代器本身不支持算术运算符,所以此时递增和递减运算符除了书写简洁以外还是必须的。

形式

递增递减运算符有两种形式:前置版本(++i)和后置版本(i++)。

前置版本形式的运算符首先将运算对象加1(或减1)然后将改变后的对象作为求值结果。

后置版本形式的运算符也会将运算对象加1(或减1)但是求值结果是运算对象改变之前那个副本

代码

int i = 0,j;   //定义两个int变量,i赋初值为0,j暂不赋值
j = ++i;       //j = 1,i = 1: 前置版本,先将i进行加1操作,在对j进行赋值
j = i++;       //j = 1,i = 2: 后置版本,(此时j = 1,i = 1)先对j进行赋值,再对i进行加1操作

注意

这两种运算符必须作用于左值运算对象。前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

不理解左值右值的可以参考:理解C和C++中的左值和右值_xuwqiang1994的博客-CSDN博客_左值和右值

建议

除非必需,否则不建议使用后置版本

原因:前置版本的递增运算符避免了不必要的工作,它把值加1后直接返回,改变了运算对象。运与之相比,后置版本需要将原始值存储下来以便于返回这个未修改的内容。如果我们不需要修改前的值,那么后置版本的操作就是一种浪费(迭代器中尤其明显)。

递增递减运算符 详解(++、--)相关推荐

  1. C++ Primer笔记12_运算符重载_递增递减运算符_成员訪问运算符

    1.递增递减运算符 C++语言并不要求递增递减运算符必须是类的成员.可是由于他们改变的正好是所操作对象的状态.所以建议设定为成员函数. 对于递增与递减运算符来说,有前置与后置两个版本号,因此.我们应该 ...

  2. python3运算符和表达式实验报告_对Python3 * 和 ** 运算符详解

    在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法. 1. 算数运算 * 代表乘法 ** 代表乘方 >>> 2 * 5 10 >>> 2 ** ...

  3. JavaScript学习总结(四)——逻辑OR运算符详解

    转载自   JavaScript学习总结(四)--逻辑OR运算符详解 在JavaScript中,逻辑OR运算符用||表示 var bTrue = true;var bFalse = false;var ...

  4. java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

    java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...

  5. mysql所支持的比较运算符_mysql比较运算符有哪些?Mysql比较运算符详解

    比较运算符可用于比较数字和字符串.今天发一篇Mysql比较运算符详解,希望对初学者有所帮助,虽然现在流行NoSQL,但是MYSQL还是很有用的,数字作为浮点值进行比较,字符串以不区为例进行比较,=运算 ...

  6. javascript中基本包装、算数运算符、递增递减运算符、赋值运算符、比较运算符、逻辑运算符、运算符优先级

    基本包装类型: 指基本类型的数据变量通过调用属性或者方法包装成了复杂类型,这个变量也称为基本包装类型对象 <script>var str = 'hello';str = str.repla ...

  7. PHP 递增/递减运算符

    2019独角兽企业重金招聘Python工程师标准>>> 运算符 名称 描述 ++$x 前递增 $x 加一递增,然后返回 $x $x++ 后递增 返回 $x,然后 $x 加一递增 -- ...

  8. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

    Java短路运算符和非短路运算符详解 时间:2017-09-15     来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...

  9. MySQL—运算符详解(算术、比较、逻辑、范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符)

    MySQL--运算符详解 知识纲要 算术运算符 比较运算符 逻辑运算符 范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符 1.算术运算符 加 减 乘 除 取余 div 也表示 ...

最新文章

  1. 陈彦铭_盆栽(陈彦铭)
  2. 第五期直播《聊聊目标检测和秋招那些事》精彩回顾
  3. centos安装mysql wsl_在 Windows Linux 子系统中安装 CentOS
  4. python基础:购物车的简单实现
  5. 鹅厂机器狗,站起来了!
  6. Socket 网络编程实践经验
  7. ie bug(如果不足,留言大家一起分享)
  8. 21 Python模块、import语句、搜索路径、变量、命名空间和作用域、dir函数、globals()和locals()函数、reload()函数、Python中的包
  9. linux 内核 linux kernel travel
  10. 调试某游戏副本中的加亮提示信息思路
  11. (软件工程复习核心重点)第六章实现和测试-第七节:黑盒测试
  12. SpringBoot与JPA
  13. 《我的WCF之旅》博文系列汇总
  14. WinForm 圆形进度条CircularProgressBar
  15. 【NLP开发】Python实现聊天机器人(微软小冰)
  16. SlickEdit 之--配置传承
  17. 毕业设计所用到的工具,需要了解的神器,不妨来看看,工具基本全了
  18. 世界坐标、相机坐标、图像坐标、像素坐标的原理、关系,并用matlab仿真
  19. 各个小组对“躲避小球”游戏的评价
  20. java mysql 分区表_mysql 分区有实用价值吗?

热门文章

  1. 二、FTP原理与配置
  2. 遥感影像公开数据集:CHN6-CUG
  3. IT笔试面试资料下载,收集
  4. java计算机毕业设计汽车维修服务系统源码+程序+lw文档+mysql数据库
  5. 一生万物的太极文化,与荣耀“1+8+N”智慧全场景的沈阳碰撞
  6. 同学录项目(Python)
  7. 人工智能--扫雷游戏
  8. 数据降维1:主成分分析法思想及原理(配图版)
  9. SQL查询重复数据,只显示一条sql语句
  10. 科目余额表有辅助核算的科目查询不到辅助