C++中的运算符总结(7):复合赋值运算符

C++中的运算符总结(7):复合赋值运算符

复合赋值运算符将运算结果赋给左边的操作数。

请看下面的代码:

int num1 = 22;
int num2 = 5;
num1 += num2; // num1 contains 27 after the operation

其中最后一行代码与下面的代码等效:

num1 = num1 + num2;

因此运算符 += 的作用如下:将两个操作数相加,再将结果赋给左边的操作数( num1)。

下表列出了众多复合赋值运算符,并说明了其工作原理:

运算符用法等效于
加法赋值运算符num1 += num2;num1 = num1 + num2;
减法赋值运算符num1 -= num2;num1 = num1 - num2;
乘法赋值运算符num1 *= num2;num1 = num1 * num2;
除法赋值运算符num1 /= num2;num1 = num1 / num2;
求模赋值运算符num1 %= num2;num1 = num1 % num2;
按位左移赋值运算符num1 <<= num2;num1 = num1 << num2;
按位右移赋值运算符num1 >>= num2;num1 = num1 >> num2;
按位 AND 赋值运算符num1 &= num2;num1 = num1 & num2;
按位 OR 赋值运算符num1 |= num2;num1 = num1 | num2;
按位 XOR 赋值运算符num1 ^= num2;num1 = num1 ^ num2;

以下程序演示了这些运算符的效果:

#include <iostream>
using namespace std;int main()
{cout << "Enter a number: ";int value = 0;cin >> value;value += 8;cout << "After += 8, value = " << value << endl;value -= 2;cout << "After -= 2, value = " << value << endl;value /= 4;cout << "After /= 4, value = " << value << endl;value *= 4;cout << "After *= 4, value = " << value << endl;value %= 1000;cout << "After %= 1000, value = " << value << endl;// Note: henceforth assignment happens within cout cout << "After <<= 1, value = " << (value <<= 1) << endl;cout << "After >>= 2, value = " << (value >>= 2) << endl;cout << "After |= 0x55, value = " << (value |= 0x55) << endl;cout << "After ^= 0x55, value = " << (value ^= 0x55) << endl;cout << "After &= 0x0F, value = " << (value &= 0x0F) << endl;return 0;
}

输出:

Enter a number: 440
After += 8, value = 448
After -= 2, value = 446
After /= 4, value = 111
After *= 4, value = 444
After %= 1000, value = 444
After <<= 1, value = 888
After >>= 2, value = 222
After |= 0x55, value = 223
After ^= 0x55, value = 138
After &= 0x0F, value = 10

分析:

在整个程序中,不断使用各种复合赋值运算符修改 value 的值。每次运算都使用了 value,并将结果赋给 value。因此,第 9 行将用户输入的值 440 加上 8,并将结果( 448)赋给 value。接下来,第 11 行将 448 减去 2,并将结果( 446)赋给 value。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转软件|钉钉个人版内测启动:AI探索未来的工作方式

目录 前言 正文 AI为核心&#xff0c;个人效率为王&#xff01; 指令中心&#xff0c;解锁AI技巧&#xff01; 灵感Store&#xff0c;探索更多可能&#xff01; 未来的AI&#xff0c;即将问世&#xff01; 个人内测体验 前言 重磅消息&#xff1a;钉钉个人版在8月16日正…

前端面试的性能优化部分(14)每天10个小知识点

目录 系列文章目录前端面试的性能优化部分&#xff08;1&#xff09;每天10个小知识点前端面试的性能优化部分&#xff08;2&#xff09;每天10个小知识点前端面试的性能优化部分&#xff08;3&#xff09;每天10个小知识点前端面试的性能优化部分&#xff08;4&#xff09;每天…

c# modbus CRC计算器(查表法)

一、简介&#xff1a; 本案例为crc计算器&#xff0c;通过查表法计算出结果 1.窗体后台源代码 using Crc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text…

Stm32的时钟系统以及使用SysTick滴答定时器实现延时

前言 STM32的时钟系统由多个时钟源和时钟树组成时钟源包括主时钟源&#xff08;HSE&#xff09;、内部高速时钟源&#xff08;HSI&#xff09;、内部低速时钟源&#xff08;LSI&#xff09;和外部低速时钟源&#xff08;LSE&#xff09;。时钟树由多个时钟分频器和时钟门控器组…

一道经典面试题:@Configuration 和 @Component 有何区别?

关于 Configuration 注解有一个特别经典的面试题&#xff1a; Configuration 和 Component 有什么区别&#xff1f; 无论小伙伴们之前是否背过相关的面试题&#xff0c;今天这篇文章学完之后相信大家对这个问题都会有更深一层的理解&#xff0c;废话不多少&#xff0c;咱们开…

容器和宿主机之间的存储问题

简介 作用&#xff1a;方便备份恢复数据&#xff0c;实现数据共享 一、单台机器中 用数据卷挂载 二、多台机器中 ssh 建立免密通道将数据scp过去&#xff0c;然后再用卷挂载到容器内 nfs 网络文件系统 搭建nfs服务器客户端挂载 过程如下 一.安装软件包yum install -…

新能源汽车技术的最新进展和未来趋势

文章目录 电池技术的进步智能驾驶与自动驾驶技术充电基础设施建设新能源汽车共享和智能交通未来趋势展望结论 &#x1f389;欢迎来到AIGC人工智能专栏~探索新能源汽车技术的最新进展和未来趋势 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客…

Rust 学习笔记(卷二)

文章目录 Rust 学习笔记&#xff08;卷二&#xff09;八、工程1. package 和 cratepackage 总览包根&#xff08;crate root&#xff09; 2. 模块初识模块单个源文件中的嵌套模块具有层级结构的源文件形成的嵌套模块小结 use 语句 3. 文档4. 使用第三方包5. 打包自己的包 九、标…

融媒行业落地客户旅程编排,详解数字化用户运营实战

移动互联网时代是流量红利的时代&#xff0c;企业常用低成本的方式进行获客&#xff0c;“增长黑客”的概念大范围传播。与此同时&#xff0c;机构媒体受到传播环境的影响&#xff0c;也开始启动全行业的媒体融合转型。在此背景下&#xff0c;2015 年神策数据成立&#xff0c;核…

港联证券:为什么好股票拿不住?股票怎么买更赚钱?

股票是一种高危险高收益的出资方式&#xff0c;要想挣钱仍是需求掌握一些技巧。那么为什么好股票拿不住&#xff1f;股票怎样买更挣钱&#xff1f;港联证券也为大家准备了相关内容&#xff0c;以供参考。 为什么好股票拿不住&#xff1f; 1、心态不稳。许多出资者缺少长时间的…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务 em

​ 鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工…

bootloader串口更新程序[瑕疵学习板]

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、储备知识二、程序步骤2.程序展示1.bootloader2.然后是主运行函数总结前言 很久没有更新文章了。最近工作太忙,没有学习很多的知识,然后这两天不忙了,就学习了一下bootloader的程序升级…

【已解决】pycharm突然双击无法打开,重启电脑也不管用

1.问题&#xff1a; pycharm突然双击无法打开&#xff0c;重启电脑也不管用 2.解决 2.1 方法一&#xff08;修改Roaming&#xff09; 1.找到C盘对应路径下的pycharm版本 2. 用记事本打开文件类型为VMOPTIONS文件 3. 修改或删除最后一行的映射路径 4.保存退出 2.2 方法二…

2023.8.28日论文阅读

文章目录 NestFuse: An Infrared and Visible Image Fusion Architecture based on Nest Connection and Spatial/Channel Attention Models(2020的论文)本文方法 LRRNet: A Novel Representation Learning Guided Fusion Network for Infrared and Visible Images本文方法学习…

phpspreadsheet导出excel自动获得列,数字下标

安装composer require phpoffice/phpspreadsheetuse PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Border;$spreadsheet new Spreadsheet(); $sheet $spreadsheet->getActiveSheet();//从65开&a…

Android 13 Ethernet变更

Android13 有线变更 以太网相关的功能在Android12 和13 网络部分变化是不大的&#xff0c;Android11 到Android 12 网络部分无论是代码存放目录和代码逻辑都是有较多修改的&#xff0c;主要包括以下几个部分 限制了设置有线网参数设置接口方法 新增有线网开启关闭接口方法 新…

实现人物关系图还在用Echarts吗?快试试relation-graph

关于relation-graph 支持Vue和React的 关联关系图谱组件&#xff0c;可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱&#xff0c;可提供多种图谱布局&#xff0c;包括树状布局、中心布局、力学布局自动布局等。官网 安装使用 一&#xff0c;通过nodejs开发v…

java主要的垃圾回收算法

垃圾收集算法了解吗&#xff1f; 标记-清除算法 标记 : 标记出所有需要回收的对象 清除&#xff1a;回收所有被标记的对象 主要存在两个缺点&#xff1a; 执行效率不稳定&#xff0c;如果 Java 堆中包含大量对象&#xff0c;而且其中大部分是需要被回收的&#xff0c;这时必…

经济大环境不好是你给自己找的理由吗?

最近很多自媒体博主都在说的一个现象&#xff0c;就是今年的经济形势比口罩那几年都要难过&#xff0c;全球的经济都面临打的挑战&#xff0c;就业岗位的缺失&#xff0c;22-35岁的青年失业率攀升很多人都在痛苦的边缘挣扎。 我国灵活就业人数已超2亿&#xff0c;平台经济快速发…

水论文的三种套路

目录 1、换模型不换领域&#xff08;同领域换基准模型&#xff09;2、换领域不换模型&#xff08;同基准模型换领域&#xff09;3、改进的模型 1、换模型不换领域&#xff08;同领域换基准模型&#xff09; 有一个&#xff0c;对Transformer做了一个改进A&#xff0c;做视频描…