第五讲:运算符与表达式:算术、关系、逻辑、赋值等运算符及其优先级

在C++编程中,运算符和表达式是构建程序逻辑的基础。它们允许我们对数据进行各种操作,从而得出新的数据值或执行特定的逻辑判断。C++中的运算符种类繁多,根据功能的不同,可以大致分为算术运算符、关系运算符、逻辑运算符和赋值运算符等几大类。此外,每种运算符都有其特定的优先级和结合性,这些规则决定了在复杂的表达式中,各个运算符的执行顺序。

一、算术运算符

算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法和取余等。

  • 加法运算符(+):用于两个数值的相加。
  • 减法运算符(-):用于两个数值的相减。
  • 乘法运算符(*):用于两个数值的相乘。
  • 除法运算符(/):用于两个数值的相除,结果为商。
  • 取余运算符(%):用于两个数值的相除,结果为余数。
  • 自增运算符(++):使变量的值增加1。
  • 自减运算符(--):使变量的值减少1。
二、关系运算符

关系运算符用于比较两个数值的大小或相等性,返回布尔值(true或false)。

  • 等于运算符(==):判断两个数值是否相等。
  • 不等于运算符(!=):判断两个数值是否不相等。
  • 大于运算符(>):判断左侧数值是否大于右侧数值。
  • 小于运算符(<):判断左侧数值是否小于右侧数值。
  • 大于等于运算符(>=):判断左侧数值是否大于等于右侧数值。
  • 小于等于运算符(<=):判断左侧数值是否小于等于右侧数值。
三、逻辑运算符

逻辑运算符用于执行逻辑运算,包括逻辑与、逻辑或和逻辑非等。

  • 逻辑与运算符(&&):当且仅当两个操作数都为true时,结果为true。
  • 逻辑或运算符(||):当且仅当两个操作数都为false时,结果为false。
  • 逻辑非运算符(!):将操作数的布尔值取反。
四、赋值运算符

赋值运算符用于将右侧的值赋给左侧的变量。

  • 简单赋值运算符(=):将右侧的值赋给左侧的变量。
  • 复合赋值运算符:如+=、-=、*=、/=、%=等,它们将右侧的值与左侧变量的当前值进行相应的算术运算后,再将结果赋给左侧变量。
五、运算符优先级和结合性

在C++中,当表达式中包含多个运算符时,运算符的优先级和结合性决定了运算的顺序。

  • 优先级:决定了在表达式中哪个运算符先被计算。例如,乘法运算符的优先级高于加法运算符,因此在一个表达式中,乘法会先于加法被计算。
  • 结合性:当两个运算符具有相同的优先级时,结合性决定了它们是从左到右还是从右到左进行计算。在C++中,大多数运算符都是左结合的,即从左到右进行计算。

了解运算符的优先级和结合性对于编写正确的C++代码至关重要,因为它们直接影响到表达式的计算结果。在实际编程中,为了代码的清晰和可读性,建议使用括号来明确指定运算的顺序,即使括号的使用可能会改变运算符的默认优先级和结合性。

综上所述,运算符和表达式是C++编程中的核心概念,它们允许我们执行各种数学和逻辑运算,从而构建出功能强大的程序。通过深入理解这些运算符的功能、优先级和结合性,我们可以更加高效地编写和调试C++代码。

示例:运算符与表达式在C++中的应用

以下是一个简单的C++程序示例,它展示了算术运算符、关系运算符、逻辑运算符和赋值运算符的使用,以及运算符的优先级和结合性。

#include <iostream>int main() {// 算术运算符示例int a = 10;int b = 5;int sum = a + b;         // 加法int difference = a - b;  // 减法int product = a * b;     // 乘法int quotient = a / b;    // 除法int remainder = a % b;   // 取余std::cout << "Sum: " << sum << std::endl;std::cout << "Difference: " << difference << std::endl;std::cout << "Product: " << product << std::endl;std::cout << "Quotient: " << quotient << std::endl;std::cout << "Remainder: " << remainder << std::endl;// 关系运算符示例bool isEqual = (a == b);bool isNotEqual = (a != b);bool isGreaterThan = (a > b);bool isLessThan = (a < b);bool isGreaterThanOrEqual = (a >= b);bool isLessThanOrEqual = (a <= b);std::cout << "Is a equal to b? " << (isEqual ? "Yes" : "No") << std::endl;std::cout << "Is a not equal to b? " << (isNotEqual ? "Yes" : "No") << std::endl;std::cout << "Is a greater than b? " << (isGreaterThan ? "Yes" : "No") << std::endl;std::cout << "Is a less than b? " << (isLessThan ? "Yes" : "No") << std::endl;std::cout << "Is a greater than or equal to b? " << (isGreaterThanOrEqual ? "Yes" : "No") << std::endl;std::cout << "Is a less than or equal to b? " << (isLessThanOrEqual ? "Yes" : "No") << std::endl;// 逻辑运算符示例bool condition1 = true;bool condition2 = false;bool andResult = condition1 && condition2;bool orResult = condition1 || condition2;bool notResult = !condition1;std::cout << "AND result: " << (andResult ? "True" : "False") << std::endl;std::cout << "OR result: " << (orResult ? "True" : "False") << std::endl;std::cout << "NOT result: " << (notResult ? "True" : "False") << std::endl;// 赋值运算符示例及运算符优先级示例int x = 10;int y = 20;int z;// 复合赋值运算符x += 5;  // 等同于 x = x + 5;y -= 3;  // 等同于 y = y - 3;// 运算符优先级示例z = x * 2 + y / 2;  // 由于乘法优先级高于加法和除法,因此先计算 x*2 和 y/2,然后相加std::cout << "x after +=: " << x << std::endl;std::cout << "y after -=: " << y << std::endl;std::cout << "z (priority example): " << z << std::endl;// 使用括号改变优先级int resultWithParentheses = (x + 5) * (y - 3);  // 使用括号确保先计算括号内的表达式std::cout << "Result with parentheses: " << resultWithParentheses << std::endl;return 0;
}

在这个示例中,我们首先使用算术运算符对整数变量进行各种运算,并打印结果。然后,我们使用关系运算符比较整数变量,并打印比较结果。接着,我们展示了逻辑运算符的使用,包括逻辑与、逻辑或和逻辑非。最后,我们演示了赋值运算符,包括简单赋值和复合赋值,以及运算符的优先级和结合性。通过使用括号,我们改变了运算符的默认计算顺序,以展示优先级规则如何被覆盖。

运行这个程序将输出各个运算的结果,帮助理解运算符和表达式在C++中的应用。

结尾

通过上述示例,我们深入探讨了C++中运算符与表达式的应用,包括算术运算符、关系运算符、逻辑运算符以及赋值运算符的使用。这些运算符构成了C++编程语言的核心部分,它们使得我们能够进行数值计算、条件判断以及逻辑推理,从而构建出功能丰富的程序。

我们了解到,运算符的优先级和结合性在表达式计算中起着至关重要的作用。它们决定了在复杂的表达式中,各个运算符的执行顺序。了解这些规则有助于我们编写正确的代码,避免潜在的错误。

此外,我们还看到了如何使用括号来改变运算符的默认优先级,以确保表达式按照我们期望的顺序进行计算。这是编写清晰、可读代码的重要技巧之一。

总之,运算符与表达式是C++编程中的基础且强大的工具。通过熟练掌握它们,我们能够编写出更加高效、可靠的程序。希望这个示例和讨论对您有所帮助,祝您在C++编程的道路上取得更大的进步!

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

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

相关文章

基于SpringBoot的电脑配件销售系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

行为型模式-责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种行为型设计模式&#xff0c;它允许多个对象都有机会处理请求&#xff0c;从而避免请求的发送者与接收者之间的耦合。将这些对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到某个对象…

win10系统部署RAGFLOW+Ollama教程

本篇主要基于linux服务器部署ragflowollama&#xff0c;其他操作系统稍有差异但是大体一样。 一、先决条件 CPU ≥ 4核&#xff1b; RAM ≥ 16 GB&#xff1b; 磁盘 ≥ 50 GB&#xff1b; Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1。 如果尚未在本地计算机&#xff…

docker使用(镜像、容器)

docker基础使用 文章目录 前言1.镜像操作1.1命令介绍1.2.案例实操1.2.1查找镜像1.2.2下载镜像1.2.3查看当前镜像 2.容器操作2.1命令2.1.1容器创建与启动2.1.2. 容器查看2.1.3. 容器操作2.1.4. 容器删除2.1.5. 容器日志2.1.6. 容器内文件操作2.1.7. 容器内命令执行2.1.8. 其他常…

《深入浅出HTTPS》读书笔记(13):块密码算法之迭代模式(续)

CTR模式 每次迭代运算的时候要生成一个密钥流&#xff08;keystream&#xff09;。 各个密钥流之间是有关系的&#xff0c;最简单的方式就是密钥流不断递增&#xff0c;所以才叫作计数器模式。 ◎在处理迭代之前&#xff0c;先生成每个密钥流&#xff0c;有n个数据块&#xff0…

服务器数据恢复—raid6阵列硬盘被误重组为raid5阵列的数据恢复案例

服务器存储数据恢复环境&#xff1a; 存储中有一组由12块硬盘组建的RAID6阵列&#xff0c;上层linux操作系统EXT3文件系统&#xff0c;该存储划分3个LUN。 服务器存储故障&分析&#xff1a; 存储中RAID6阵列不可用。为了抢救数据&#xff0c;运维人员使用原始RAID中的部分…

AIGC训练效率与模型优化的深入探讨

文章目录 1.AIGC概述2.AIGC模型训练效率的重要性3.模型优化的概念与目标4.模型优化策略4.1 学习率调节4.2 模型架构选择4.3 数据预处理与增强4.4 正则化技术4.5 量化与剪枝 5.代码示例6.结论 人工智能领域的发展&#xff0c;人工智能生成内容&#xff08; AIGC&#xff09;越来…

Java Stream reduce 函数,聚合数据

Stream.reduce() 是 Stream 的一个聚合方法&#xff0c;它可以把一个 Stream 的所有元素按照自定义聚合逻辑&#xff0c;聚合成一个结果。 先看一个简单数字求和&#xff1a; public class Main {public static void main(String[] args&#xff09;{int sum Stream.of(1, 2…

ubuntu 22.04 mini 安装,在配置网络时重启后配置文件被重置原因与解决方法

在 /etc/netplan/50-cloud-init.yaml 配置文件中有一段注释中有说明 rootlocalhost:/etc/netplan# cat 50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disab…

Ubuntu Server 22.04.5 从零到一:详尽安装部署指南

文章目录 Ubuntu Server 22.04.5 从零到一&#xff1a;详尽安装部署指南一、部署环境二、安装系统2.1 安装2.1.1 选择安装方式2.1.2 选择语言2.1.3 选择不更新2.1.4 选择键盘标准2.1.5 选择安装版本2.1.6 设置网卡2.1.7 配置代理2.1.8 设置镜像源2.1.9 选择装系统的硬盘2.1.10 …

jmeter 获取唯一全局变量及多线程读写的问题

一、jmeter 获取唯一ID号全局变量 在JMeter中获取唯一ID号并设置为全局变量&#xff0c;可以通过以下几种方法实现&#xff1a; 使用JMeter内置的UUID函数&#xff1a; JMeter提供了一个内置的函数__UUID&#xff0c;可以生成一个随机的UUID&#xff0c;这个UUID是全局唯一的。…

html 中的 <code>标签

定义和用途 <code> 标签是HTML中的一个内联元素&#xff0c;用于定义计算机代码片段。当你需要在网页内容中展示代码&#xff0c;比如编程语言代码&#xff08;如JavaScript、Python、Java等&#xff09;、命令行指令、标记语言代码&#xff08;如HTML、XML等&#xff09…

Qt之样式表设置总结。。。持续更新

参考文章链接如下: Qt样式表之一:Qt样式表和盒子模型介绍 Qt样式表之二:QSS语法及常用样式 Qt样式表之三:实现按钮三态效果的三种方法 Qt样式表之一:QSS名词解释 Qt样式表之二:常用控件qss Qt样式表之三:QSS奇技淫巧 样式表介绍 Qt样式表是一个可以自定义部件外观的十…

ASP.NET Web(.Net Framework) Http服务器搭建以及IIS站点发布

ASP.NET Web&#xff08;.Net Framework&#xff09; Http服务器搭建以及IIS站点发布 介绍创建ASP.NET Web &#xff08;.Net Framework&#xff09;http服务器创建项目创建脚本部署Http站点服务器测试 Get测试编写刚才的TestWebController.cs代码如下测试写法1测试写法2 Post测…

yolov11剪枝

思路&#xff1a;yolov11中的C3k2与yolov8的c2f的不同&#xff0c;所以与之前yolov8剪枝有稍许不同&#xff1b; 后续&#xff1a;会将剪枝流程写全&#xff0c;以及增加蒸馏、注意力、改loss&#xff1b; 注意&#xff1a; 1.在代码105行修改pruning.get_threshold(yolo.mo…

贪心算法基础解析

贪心算法 贪心算法的核心思想是&#xff1a;在每个阶段选择当前状态下最优的选择&#xff0c;从而希望通过局部最优的选择达到全局最优。 53. 最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#…

【初阶数据结构和算法】二叉树顺序结构---堆的定义与实现(附源码)

文章目录 一、堆的定义与结构二、堆的实现1.堆的初始化和销毁堆的初始化堆的销毁 2.向上调整算法和入堆向上调整算法入堆 3.向下调整算法和出堆顶数据向下调整算法出堆 4.堆的有效数据个数和判空堆的有效数据个数堆的判空 5.取堆顶数据 三、堆的源码 一、堆的定义与结构 本篇内…

【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【Docker】Docker配置远程访问

配置Docker的远程访问&#xff0c;你需要按照以下步骤进行操作&#xff1a; 1. 在Docker宿主机上配置Docker守护进程监听TCP端口 Docker守护进程默认只监听UNIX套接字&#xff0c;要实现远程访问&#xff0c;需要修改配置以监听TCP端口。 ‌方法一&#xff1a;修改Docker服务…