【C++基础编程】三、运算符

文章目录

三、运算符

1、算术运算符

运算符含义示例
+对两个数字进行相加的计算10 + 3 = 13
-对两个数字进行相减的计算10 - 3 = 7
*对两个数字进行相乘的计算10 * 3 = 30
/对两个数字进行除法的计算10 / 3 = 3
%对两个数字进行求模运算(求余数)10 % 3 = 1
注意事项:

整型与整型的计算结果,还是一个整型。所以,如果10/3的时候,得到的结果是3.3333333,此时系统会将这个数字强制类型类型转换成整型的结果,舍去小数点后面所有的数字,只保留整数部分,也就是3。

在进行计算的时候,结果会进行类型的提升,将结果提升为取值范围大的数据类型。
  • int与int的计算结果是int
  • int与long的计算结果是long
  • float与long的计算结果是float
  • float与double的计算结果是double
  • ...
#include <iostream>int main(){// 定义两个变量,用来做计算std::cout << 10 + 3 << std::endl;     // 13std::cout << 10 - 3 << std::endl;     // 7std::cout << 10 * 3 << std::endl;     // 30std::cout << 10 / 3 << std::endl;     // 3std::cout << 10 % 3 << std::endl;     // 1return 0;
}

重点来了!自增自减运算符!

++、–是自增自减运算符,表示在现有的值的基础上,对数据进行+1和-1的操作。

#include <iostream>int main(){// 定义一个整型的变量int number = 10;// 在现有的值的基础上+1number++;// number现在的结果就是11std::cout << number << std::endl;return 0;
}

但是!!自增自减运算符,还可以写在变量前面!

  • 自增自减运算符,在变量之前,表示先对变量进行计算,再取变量的值使用。
  • 自增自减运算符,在变量之后,表示先取变量的值使用,再对变量进行计算。
#include <iostream>int main(){// 定义一个变量int number = 10;std::cout << number++ << std::endl;        // 输出10, 结束后number的值自增为11std::cout << ++number << std::endl;        // 输出12, 在上一步结束之后, number的值自增为了11, 在这里先进行计算, 再取变量的值使用。运算结束后, number的值为12std::cout << --number << std::endl;        // 输出11, 在12的基础上, 先减一, 再输出结果。运算结束后, number的值为11std::cout << number-- << std::endl;        // 输出11, 在11的基础上, 先取值, 再减一。运算结束后, number的值为10std::cout << number << std::endl;          // 输出10return 0;
}

练习题

// 有一个三位的数字, 计算每一位上的数字的和
#include <iostream>int main(){// 定义一个三位的数字int number = 123;// 分别获取每一位的数字int g = number % 10;int s = number / 10 % 10;int b = number / 100;// 计算每一位的数字的和int result = g + s + b;std::cout << result << std::endl;return 0;
}

2、赋值运算符

在C++中的赋值运算符是=,可以将等号右边的值,给等号左边的变量进行赋值。

#include <iostream>int main(){// 定义一个变量int variable;// 给这个变量进行赋值variable = 10;// 这里的等号,就是一个赋值运算符,将等号右边的值给左边的变量进行赋值。// 赋值完成后,变量variable的值,就是10return 0;
}

请注意:在C++中,等号是赋值的意思,并不是比较相等的意思。

赋值运算符的意义其实很简单,就是等号右边的值给左边的变量进行赋值。但与此同时,赋值运算符与上述的算术运算符类似,也是有运算的结果的。赋值运算的结果就是赋值完成以后的变量的值!

#include <iostream>int main(){// 定义一个变量int number;// 给变量赋值,并输出赋值结果std::cout << (number = 100) << std::endl;     // 这里的输出结果是100,因为赋值完成之后的变量number的值就是100return 0;
}

此外,程序员都可会偷懒了,在赋值运算符的基础上,又结合了常用的计算,衍生出来了其他的组合的运算符。

常见的组合运算符:+= -= *= /= %=

以 += 为例,表示将一个变量,在现有的值的基础上进行加法的计算。

#include <iostream>int main(){// 定义一个变量int number = 10;// 让变量在现有的值的基础上+10number += 10;std::cout << number << std::endl;   // number的结果就是20return 0;
}

在上述代码中,我们可以将number += 10, 理解为 number = (int)(number + 10);
对数字number进行加10的计算,并将计算的结果再强制类型转换成变量原来的类型。
例如:
char c = ‘a’;
c += 1;
最后c的结果是b,其实在这里已经完成了结果的强制类型转换。因为字符型的变量在参与运算的时候,结果会自动的转型为int类型
因为组合运算符内置了强制类型转换的操作,才会使得将计算的结果再转型为char类型

3、关系运算符

关系运算,就是对两个数字进行大小、相等的比较的运算。常用的关系运算符如下:

符号描述示例
==判断两个数字是否相等a == b
!=判断两个数字是否不相等a != b
>判断左边的数字是否大于右边的数字a > b
<判断左边的数字是否小于右边的数字a < b
>=判断左边的数字是否大于等于右边的数字a >= b
<=判断右边的数字是否小于等于右边的数字a <= b

关系运算符比较的是数值类型和字符类型的数据,得到的比较结果一定是bool类型。

#include <iostream>int main(){std::cout << (10 > 5) << std::endl;      // truestd::cout << (10 < 5) << std::endl;      // falsestd::cout << (10 >= 5) << std::endl;     // truestd::cout << (10 <= 5) << std::endl;     // falsestd::cout << (10 == 5) << std::endl;     // falsestd::cout << (10 != 5) << std::endl;     // truereturn 0;
}

4、逻辑运算符

逻辑运算,是对两个布尔类型的变量进行的逻辑操作。常见的逻辑运算符如下:

符号描述示例
&与运算,两真即为真,任意一个为假,结果即为假true & false
|或运算,两假即为假,任意一个为真,结果即为真true | false
!非运算,非真即假,非假即真!true
^异或运算,相同为假,不同为真true ^ false
&&短路与,左边的结果为假,右边的表达式不参与运算false && true
||短路或,左边的结果为真,右边的表达式不参与运算true || false

关系运算符比较的是数值类型和字符类型的数据,得到的比较结果一定是bool类型。

#include <iostream>int main(){std::cout << (true & false) << std::endl; // falsestd::cout << (true | false) << std::endl; // truestd::cout << (!true) << std::endl;        // falsestd::cout << (true ^ true) << std::endl;  // falseint num1 = 10;int num2 = 20;bool res = num1++ > 10 && num2++ < 100;std::cout << "res = " << res << ", num1 = " << num1 << ", num2 = " << num2 << std::endl;return 0;
}

5、位运算符

位运算,是作用于两个整型数字的运算。将参与运算的每一个数字计算出补码,对补码中的每一位进行类似于逻辑运算的操作,1相当于True,0相当于False。

符号描述示例
&位与运算10 & 20
|位或运算10 | 20
^位异或运算10 ^ 20
~按位取反运算~10
<<位左移运算10 << 2
>>位右移运算10 >> 2
  • ~:对数字补码的每一位进行取反,包括符号位。
  • <<:对数字补码的每一位向左移动指定的位数,右侧补0。
  • >>:对数字补码的每一位向右移动指定的位数,左侧补符号位。
#include <iostream>int main() {std::cout << (10 & 20) << std::endl; // 位与运算std::cout << (10 | 20) << std::endl; // 位或运算std::cout << (10 ^ 20) << std::endl; // 位异或运算std::cout << (~10) << std::endl;     // 按位取反运算std::cout << (10 << 2) << std::endl; // 位左移运算std::cout << (10 >> 2) << std::endl; // 位右移运算return 0;
}

6、三目运算符

三目运算符是一个带有简单逻辑的运算符,用?:来表示,语法如下: condition ? value1 : value2

语义: condition是一个bool类型的变量或者bool结果的表达式,如果为true, 运算的结果为value1;如果为false, 运算的结果为value2。

#include <iostream>using namespace std;int main() {// 从控制台输入两个数字,计算两个数字的最大值int num1, num2;cout << "请输入一个数字: ";cin >> num1;cout << "请再次输入一个数字: ";cin >> num2;int res = num1 > num2 ? num1 : num2;cout << "最大值是: " << res << endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

《JavaEE进阶》----20.<基于Spring图书管理系统(登录+添加图书)>

PS&#xff1a;关于接口定义 接口定义&#xff0c;通常由服务器提供方来定义。 1.路径&#xff1a;自己定义 2.参数&#xff1a;根据需求考虑&#xff0c;我们这个接口功能完成需要哪些信息。 3.返回结果&#xff1a;考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…

Sigrity Power SI 3D-EM Full Wave Extraction模式如何进行S参数提取和观测3D电磁场和远场操作指导(一)

Sigrity Power SI 3D-EM Full Wave Extraction模式如何进行S参数提取和观测3D电磁场和远场操作指导(一) Sigrity Power SI的3D-EM Full Wave Extraction模式是Power SI的3D全波提取工具,相比于2D提取,3D全波提取的结果更为精确,且支持设置跨平面的port,也就是lump port,这…

用Python打造你的《天天酷跑》——从零开始的游戏开发之旅

前言 在快节奏的生活里&#xff0c;偶尔玩一款轻松有趣的小游戏可以很好地放松心情。《天天酷跑》作为一款经典的跑酷游戏&#xff0c;凭借其简单易上手的操作和丰富多彩的关卡设计&#xff0c;深受广大玩家的喜爱。如果你对游戏开发感兴趣&#xff0c;或者想要尝试自己动手制…

泷羽sec学习打卡-shodan扫描4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于shodan的那些事儿-4 一、shodan4如何查看公网ip&#xff1f;如何查看自己的ip&#xff1f;如何查看出…

深层次识别:书脊图像分割

书脊图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DAttention&#xff06;yolov8-seg-EfficientHead等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glo…

已有商标证的人注意,留存使用证据!

近日有个网友联系普推知产商标老杨&#xff0c;说商标被撤三已经答辩了一次&#xff0c;但是没有成功&#xff0c;无法证明在指定服务上使用&#xff0c;原商标注册证被作废。 现在好的商标资源有限&#xff0c;在许多申请注册时会通过撤三打掉在先权利&#xff0c;即连续三年不…

Oracle视频基础1.3.7练习

1.3.7 看oracle是否启动构造一个pfile:boobooke.ora看spfilewilson内容修改alert log file里拷贝的参数内容&#xff0c;创建一个pfile boobooke.ora用新创建的pfile启动数据库&#xff0c;并创建新的spfile:spfilebbk.ora启动数据库&#xff0c;监听&#xff0c;看新的进程解…

深度强化学习:从理论到应用

目录 1.引言 2.什么是强化学习&#xff1f; 3.深度学习和强化学习的结合 4.深度强化学习的主要方法 5.深度强化学习的应用领域 6.深度强化学习的挑战与未来 7.总结 1.引言 深度强化学习&#xff08;Deep Reinforcement Learning&#xff0c;DRL&#xff09;是近年来人工…

如何在算家云搭建Hunyuan-DiT(图像生成)

一、Hunyuan-DiT简介 Hunyuan-DiT 是由腾讯混元推出的文生图扩散模型&#xff0c;支持中文和英文双语输入&#xff0c;其他开源模型相比&#xff0c;Hunyuan-DiT 在中文到图像生成方面树立了新的水平。 要求&#xff1a; 所需的最小 GPU 内存为 11GB&#xff0c;建议使用具有…

2024版新鲜出炉:最新大厂 Java 面试八股文合集(附权威答案)

谈到 Java 面试&#xff0c;相信大家第一时间脑子里想到的词肯定是金三银四&#xff0c;金九银十。好像大家的潜意识里做 Java 开发的都得在这个时候才能出去面试&#xff0c;跳槽成功率才高&#xff01;但 LZ 不这么认为&#xff0c;LZ 觉得我们做技术的一生中会遇到很多大大小…

Latex之LNCS模板——使用bib添加参考文献

1、获取参考文献 从谷歌学术中获取bib格式的参考文献。 创建一个.bib文件&#xff0c;将参考文献复制进去。 2、添加参考文献 在文章最后引用.bib格式的参考文献。 \bibliographystyle{splncs04} % 格式 \bibliography{references.bib} % 文件名 LNCS模板中会包含该格式文件…

【考研数学 - 数二题型】考研数学必吃榜(数二)

数学二 suhan, 2024.10 文章目录 数学二一、函数❗1.极限1.1求常见极限1.2求数列极限1.2.1 n项和数列极限1.2.2 n项连乘数列极限1.2.3 递推关系定义的数列极限 1.3确定极限式中的参数1.4无穷小量阶的比较 2.连续2.1判断是否连续&#xff0c;不连续则判断间断点类型2.2证明题 二…

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (二)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 &#xff08;二&#xff09; 一、前言 目前鸿蒙应用的实现逻辑&#xff0c;基本都是参考和移植Android端来实现。针对BLE低功耗蓝牙来说&#xff0c;在鸿蒙化的实现过程中。我们发现了&#xff0c;鸿蒙独有的优秀点&#xff0c…

基于STM32的数字温度计教学

引言 数字温度计是许多电子项目中的常见应用&#xff0c;它可以实时监测周围环境的温度并显示。利用STM32微控制器实现数字温度计&#xff0c;可以帮助我们了解如何使用传感器进行模拟信号转换及数据传输。本教程将指导您使用STM32和DS18B20数字温度传感器实现一个简单的数字温…

go mod 依赖管理

什么是go mod go mod 是从 Go 1.11 版本开始引入的。Go Modules 是 Go 语言官方提供的一个版本管理工具&#xff0c;旨在解决依赖管理和版本控制的问题。从 Go 1.11 开始&#xff0c;Go Modules 被作为实验性功能引入&#xff0c;到了 Go 1.13 版本&#xff0c;Go Modules 成为…

洛谷解题日记||基础篇2

题目链接 0 剪刀&#xff0c;1 石头&#xff0c;2 布&#xff0c;3 蜥蜴人&#xff0c;4 斯波克我们可以根据题意&#xff0c;构建一个二维矩阵 result[5][5] 来表示每一种出拳的胜负情况。 #include <iostream> #include <vector> using namespace std;int m…

年会必备的抽奖小程序!

感觉一年一度的年会快来了&#xff0c;准备个小的抽奖小程序蛮陶冶情操的&#xff01; 正好今天有空整了一个&#xff0c;简单&#xff0c;简洁&#xff01;&#xff0c;大家也可以玩起来&#xff01; 技术栈&#xff1a; Flask 试玩的链接在这里,有意思的话也可以部署到自己的…

sqoop Oracle 导入到hive 日期时间消失

sqoop脚本&#xff1a; sqoop import -D mapred.job.queue.namehighway \ -D mapreduce.map.memory.mb4096 \ -D mapreduce.map.java.opts-Xmx3072m \ --connect "jdbc:oracle:thin://localhost:61521/LZY2" \ --username LZSHARE \ --password 123456 \ --query &q…

20241108通过iperf3确认中科创达的高通CM6125的WIFI的网速【失败】

20241108通过iperf3确认中科创达的高通CM6125的WIFI的网速【失败】 2024/11/8 15:43 由于以太网不能用&#xff0c;那就测试一下WIFI&#xff0c;iperf3链接/测试异常。 一般认为可能的原因有&#xff1a; 1、CM6125开发板的WIFI不带天线&#xff0c;影响性能。 2、CM6125的And…

Vue项目中点击按钮后浏览器屏幕变黑,再次点击恢复的解决方法

情况说明 点击按钮后出现以下情况&#xff0c;浏览器屏幕变暗&#xff0c;再次点击则恢复正常。 解决方法&#xff1a; 找到你的全局样式文件&#xff0c;我的是gloable.css&#xff0c;添加以下代码&#xff1a; .v-modal {display: none; }重启服务器即可解决。