简述前缀运算符与后缀运算符
来源:互联网 发布:java获取本机端口号 编辑:程序博客网 时间:2024/05/18 18:42
对于初学者,经常纠结的一个问题就是 for 循环中的循环量递增过程中,到底是应该用前缀运算符还是后缀运算符。
- 逻辑
首先谈一下前缀运算符和后缀运算符有什么区别:粗略的讲,
- a++是当前值计算表达式,然后将变量a的值+1;
- 而++a是先将a的值+1,然后使用新的值来计算表达式。
在大多数情况下(一个正常的软件工程规定的程序设计规范和风格,应该是尽量避免那种考题式的容易含糊的语句,应该尽量使用意思明确,即:一条语句实现一个功能)是没有区别的,就逻辑上来说,for 循环中,使用前缀运算符和后缀运算符所得的结果都是一样的,但是这里涉及到一个重要的问题:效率!!!
- 效率
我们在设计程序时,应当尽量减少程序的开销,在能够使用较少内存的地方,绝不去占用多的内存,这样可以提高程序的执行速度。
对于内置类型和当代的编译器而言,这没有多大差别。但是一旦涉及到程序员自定义的类类型时,就会体现出很大差别。(C++允许程序员重定义运算符,称之为运算符重载),如果把一个占用内存较大的类作为循环量对其使用递增(递减)运算符时,我们就应当使用前缀运算符++a(--a)。
原因如下:
- 前缀运算符:(程序员自定义)将值+1,然后返回结果;
- 后缀运算符:首先复制一个副本,将其值+1,然后将复制的副本返回。
很明显能看出两者之间的差别吧。
所以,在程序设计时,应该养成使用前缀运算符的习惯,在C++软件工程中,经常会涉及到较大的类类型需要重载运算符,在不产生歧义的情况下,尽量使用前缀运算符能够帮助我们提高程序的执行速度。
0 0
- 简述前缀运算符与后缀运算符
- 运算符*, 前缀++,后缀++
- 前缀++ 后缀++ 运算符重载
- 前缀++ 后缀++ 运算符重载
- 前缀++ 后缀++ 运算符重载
- 运算符重载 前缀++ 后缀++
- 哑元与运算符重载:前缀++与后缀++
- 727运算符前缀变后缀
- c++运算符重载++前缀后缀
- 定义类的前缀运算符和后缀运算符
- 关于前缀自增运算符与后缀自增运算符的区别,以及利弊
- C++: 重载前缀运算符与重载后缀运算符(以++为例)
- 前缀运算和后缀运算
- C++_运算符重载_前缀自增与后缀自增
- 运算符重载(重点++前缀和后缀)
- 自增、自减运算符的前缀和后缀
- 144,运算符简述
- 后缀自增/自减运算符与前缀自增/自减运算符的使用区别(即i++与++i)
- Ajax请求中的async:false和async:true的差异
- BZOJ1031 [JSOI2007]字符加密Cipher 后缀数组
- 我怎么学习spring-bean的作用域
- 数据库的常规命令
- 欢迎使用CSDN-markdown编辑器
- 简述前缀运算符与后缀运算符
- 机器学习笔记
- 利用RecyclerView实现的一个动画给变item的位置和左右滑动删除该RcyclervView的Item条目
- Power OJ 2543 赛场布置(网络流最小割)
- Notice: Undefined index: act
- 搭建NFS服务器
- 个人记录-LeetCode 55. Jump Game
- [伪位运算生成树] HDU 5629 Clarke and tree
- Android Webview 获取网页form 提交的数据