【C++ Primer Plus学习记录】递增运算符(++)和递减运算符(--)

递增运算符(++)和递减运算符(--):前缀版本位于操作数前面,如++x;后缀版本位于操作数后面,如x++。两个版本对操作数的影响是一样的,但是影响的时间不同。这就像吃饭前买单和吃饭后买单的最终结果是一样的,但是买单的时间不同。

程序清单5.7演示递增运算符(++)的这种差别。

cpp 复制代码
//5.7
#if 1
#include<iostream>
using namespace std;

int main()
{
	int a = 20, b = 20;
	cout << "a   = " << a   << ":   b = " << b << endl;
	cout << "a++ = " << a++ << ": ++b = " << ++b << endl;
	cout << "a   = " << a   << ":   b = " << b << endl;

	system("pause");
	return 0;
}
#endif

a++意味着使用a的当前值计算表达式 ,然后将a的值加1;而++b的意思是先将b的值加1,然后使用新的值来计算表达式

虽然选择使用前缀格式还是后缀格式对程序的行为没有影响,但执行速度可能有细微的差别。对于内置类型和当代的编译器而言,这看似不是什么问题。然而,C++允许您针对类定义这些运算符,在这种情况下,用户这样定义前缀函数:将值加1,然后返回结果;但后缀版本首先复制一个副本,将其加1,然后将复制的副本返回。因此,对于类而言,前缀版本的效率比后缀版本高。

总之,对于内置类型,采用哪种格式不会有差别;但对于用户定义的类型,如果有用户定义的递增和递减运算符,则前缀格式的效率更高。

相关推荐
lightqjx12 分钟前
【C++】C++11 - Lambda表达式+包装器
开发语言·c++·c++11·lambda·包装器
BHXDML17 分钟前
操作系统实验:(七)动态分区分配方式的模拟
开发语言·数据库·操作系统
载数而行52019 分钟前
算法系列1之最小生成树
c语言·数据结构·c++·算法·贪心算法
额,不知道写啥。20 分钟前
HAO的DP
c++·算法·深度优先·动态规划
重生之后端学习25 分钟前
208. 实现 Trie (前缀树)
java·开发语言·数据结构·算法·职场和发展·深度优先
niuniudengdeng26 分钟前
一种基于XRF实景建模与AI世界生成的一步闭式解光线追踪视觉生成模型
人工智能·数学·算法
mit6.82426 分钟前
树上滑窗
算法
清水白石00829 分钟前
从频繁“握手”到高效通行:Python 数据库连接池深度解析与调优实战
开发语言·数据库·python
我命由我1234530 分钟前
C++ EasyX 开发,MessageBox 函数参数问题:“const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容
c语言·开发语言·c++·后端·学习·visualstudio·visual studio
Trouvaille ~34 分钟前
【Linux】高并发服务器的起点:五种 IO 模型与非阻塞 IO 本质解析
linux·运维·服务器·c++·操作系统·io模型·同步异步