【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,然后将复制的副本返回。因此,对于类而言,前缀版本的效率比后缀版本高。

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

相关推荐
傻啦嘿哟3 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670793 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
Dola_Zou4 小时前
工厂智能排产软件算法保护与按产线计费实战
算法·自动化·软件工程·软件加密
传奇开心果编程4 小时前
【xilem0.4基础语法学与练】第13课:Xilem 0.4 最简短代码体现“一切皆设计图“
学习·rust·前端框架
小雪崩4 小时前
嵌入式学习 day45:51单片机基础
学习·51单片机
李少兄4 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
码匠许师傅4 小时前
【设计模式精讲】29.行为型模式总结与对比(Behavioral Patterns Summary)
c++·设计模式·uml
Seoyoneh5 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
啦啦啦啦啦zzzz5 小时前
Logger的组装(c++20)
c++·算法·c++20
Tangyuewei5 小时前
Java 写 Agent:模型只是组件
java·开发语言