当前位置: 首页 > news >正文

【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述

1.23 运算符概述

       运算符,在数学中常见的加减乘除之类的符号,那么在C++在编程语言中呢,将使用特定的符号或标记对操作数进行操作以生成结果。用算术运算符将运算对象(也称操作数)连接起来的、符合C ++语法规则的式子,称为C ++算术表达式运算对象包括常量、变量、函数返回值等,以下是一些常见的运算符概述:

( 注:a+b,a就是左边的操作数,b就是右边的操作数)

1.算术运算符

  • 加法运算符(+):将两个操作数相加,例如 a + b
  • 减法运算符(-):从左操作数中减去右操作数,例如 a - b
  • 乘法运算符(*):将两个操作数相乘,例如 a * b
  • 除法运算符(/):将左操作数除以右操作数,例如 a / b
  • 取模运算符(%):返回两个操作数相除的余数,例如 a % b
  •     +=  :  a+=b,相当于 a= a+b;
  •     -=   :  a-=b,相当于 a= a-b;
  •     *=   :  a*=b,相当于 a= a*b;    注意=号右边的看成一个整体,例如a*=2+3; 实际为a=a*(2+3)
  •     /=   :   a/=b,相当于 a= a/b;
  •    %=  :    a/=b,相当于 a= a%b;

1.1 对于 / 符号 

   1.取整符号   /

例如:7/2 = 3,7除以2,商为3,余数为1,那取整就是取的商的结果,3  (这里的=是我们数学意义上的=,在计算机里,我们要比较,需要使用比较运算符 ==,双等于号)

   2.除法符号    /

例如:7/2.0 == 3.5,此时除数为浮点类型,所以我们的被除数7,使用/符号表示的为除法运算,并且根据浮点数的小数点,保留相应的位数。

1.2 对于取模运算 %

    例如:7%2 = 1,7除以2.商为3,余数为2,取模就是取的除不尽的余数,如果除尽的就是0,除不尽的就是拿的是余数,2

1.2.1 产生随机数

这里引用千锋教育网络基础班的资料,解释一下取模的一些用法

2.一些复合运算的案例

 这里要考虑优先级,从右往左--------<<<<<<--------依次计算

int a = 3; a+= a-=a*=a;根据表达式 `a+= a-=a*=a;`,其运算结果和过程如下:1. 首先,根据赋值运算符的优先级规则,先执行乘法赋值运算 `a*=a`。- 乘法赋值运算 `a*=a` 将 `a` 乘以自身的值,结果为 `9`。- 此时的表达式变为 `a+= a-=9;`。2. 接着,执行减法赋值运算 `a-=9`。- 减法赋值运算 `a-=9` 将 `a` 减去 `9` 的值,结果为 `9-9=0`。- 此时的表达式变为 `a+=0;`。3. 最后,执行加法赋值运算 `a+=0`。- 加法赋值运算 `a+=0` 将 `a` 加上 `0` 的值,结果为 `0+(0)=0`。- 所以最终的赋值结果是 `a` 等于 `0`。综上所述,根据给定的表达式 `a+= a-=a*=a;` ,其运算结果是 `0`。

程序运行: 

 

2.关系运算符(比较运算符)

  • 相等运算符(==):检查两个操作数是否相等,例如 a == b
  • 不等运算符(!=):检查两个操作数是否不相等,例如 a != b
  • 大于运算符(>):检查左操作数是否大于右操作数,例如 a > b
  • 小于运算符(<):检查左操作数是否小于右操作数,例如 a < b
  • 大于等于运算符(>=):检查左操作数是否大于或等于右操作数,例如 a >= b
  • 小于等于运算符(<=):检查左操作数是否小于或等于右操作数,例如 a <= b

3.逻辑运算符

  • 逻辑与运算符(&&):当两个操作数都为真(在代码里面是叫True)时,返回真。如果任一操作数为假(在代码里面是叫False),则返回假,例如 a && b
  • 逻辑或运算符(||):当任一操作数为真时,返回真。如果两个操作数都为假,则返回假,例如 a || b
  • 逻辑非运算符(!):将操作数的逻辑值取反,例如 !a

4.赋值运算符

  • 简单赋值运算符(=):将右操作数的值赋给左操作数,例如 a = b
  • 复合赋值运算符:例如加法赋值运算符(+=)、减法赋值运算符(-=)、乘法赋值运算符(*=)等。

 5.区分什么是单目、双目、三目

如果运算符需要一个运算对象 就叫单目运算符

如果运算符 需要两个运算对象 就叫双目运算符

如果运算符 需要三个运算对象 就叫三目运算符

如果运算符 需要多个运算对象 就叫多目运算符

6. 复合运算符

常见的复合运算符包括:

  • 加法赋值运算符(+=):将右操作数的值加到左操作数,并将结果赋给左操作数,例如 a += b 等价于 a = a + b
  • 减法赋值运算符(-=):从左操作数中减去右操作数的值,并将结果赋给左操作数,例如 a -= b 等价于 a = a - b
  • 乘法赋值运算符(*=):将左操作数乘以右操作数的值,并将结果赋给左操作数,例如 a *= b 等价于 a = a * b
  • 除法赋值运算符(/=):将左操作数除以右操作数的值,并将结果赋给左操作数,例如 a /= b 等价于 a = a / b
  • 取模赋值运算符(%=):将左操作数除以右操作数的余数赋给左操作数,例如 a %= b 等价于 a = a % b

1.23.6 按位“与”以及 按位取反

1.按位“与”  &

语法:全1为1  有0为0
特点:和1相与保持不变    和0相与为0
场景: 将指定位 清0

例如:

   1100 1010
&  1011 1100 
-----------------1000 1000

注:代码中需要将这样二进制的转成16进制(单片机开发经常使用) 

 2.按位“或” |

语法:有1为1全0为0

特点:和1或置1,和0或 保持不变(两个只要有一个1就是1,有0不管,原来是啥还是啥)

场景:将指定位 置1

   1100 1010
|  1011 1100 
-----------------1111 1110

3.按位取反 “~”

语法:0变1,1变0

例如:

~1011 1101 == 0100 0010

1.23.7 按位“异或”运算符

1.按位异或 ^

语法:相同为0,不同为1
特点:和1异或取反,和0异或保持不变
场景:将指定位发生翻转

例如:

   1100 1010
^  1011 1100 
-----------------0111 1110

1.23.8 左移、右移运算符

1.左移运算符 <<   

左移<<:左边丢弃 右边补0
移动的位数 不要超过 自身位的宽度

例如:dataNum = 1011 1101    

现在执行 dataNum << 3; 则dataNum == 1110 1000  向左移动3位,右边补0;

例如代码中:int data = 10;10的二进制是1010  (记住转十进制4位,就是8421十进制从左往右)

那么0000 1010 <<2;左移两位变成:0010 1000 =32+8 = 40 

2.右移运算符 >> 

右移<<:右边丢弃 左边补0(负数补1)

引用千锋教育c++基础班资料笔记中内容

 不管是算术右移、还是逻辑右移都是编译器决定,我们使用者是无法确定的。

无符号数:右边丢弃左边补0有符号数:
正数:右边丢弃左边补0
负数:右边丢弃左边补0(逻右移)
负数:右边丢弃 左边补1 (算术右移)

引用千锋教育c++基础班资料笔记中案例

下图就是我自己使用的计算机的右移策略是算术右移; 

 

今天先到这里,有问题的打在评论区或者私聊我。谢谢支持,mua爱大家

相关文章:

【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述

1.23 运算符概述 运算符&#xff0c;在数学中常见的加减乘除之类的符号&#xff0c;那么在C在编程语言中呢&#xff0c;将使用特定的符号或标记对操作数进行操作以生成结果。用算术运算符将运算对象(也称操作数)连接起来的、符合C 语法规则的式子&#xff0c;称为C 算术表达式运…...

python爬虫分析基于python图书馆书目推荐数据分析与可视化

收藏关注不迷路 文章目录 前言一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、文章目录 前言 随着电子技术的普及和快速发展&#xff0c;线上管理系统被广泛的使用&#xff0c;有很多商业机构都在实现电子信息化管理&#xff0c;图书推荐也不例外&#xff0c…...

Java零基础入门-关系运算符

前言 Java作为一门广受欢迎的开发语言&#xff0c;其在企业级应用和移动应用开发中有着广泛的应用。如果你是一个Java零基础的初学者&#xff0c;那么你来到了一个正确的地方。在本篇文章中&#xff0c;我们会详细介绍Java中的关系运算符&#xff0c;帮助你快速入门。 摘要 …...

1200*A. Trust Nobody(贪心)

Problem - 1826A - Codeforces 解析&#xff1a; 从大到小枚举说谎人的个数x&#xff0c;然后查看是否有 x个人说谎即可。 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int t,n,a[N]; signed main(){scanf("%lld",&a…...

二维码智慧门牌管理系统升级解决方案:采集项目的建立与运用

文章目录 前言一、采集项目的建立二、采集项目的运用三、采集项目的意义 前言 在二维码智慧门牌管理系统的升级过程中&#xff0c;一个至关重要的环节是采集项目的建立与运用。采集项目是新建采集任务的前提&#xff0c;同时也是整个系统升级的关键步骤。其意义近似于现实中的…...

Azure - 机器学习:创建机器学习所需资源,配置工作区

目录 一、Azure机器学习工作区与计算实例简要介绍工作区计算实例 二、创建工作区1. 登录到 Azure 机器学习工作室2. 选择“创建工作区”3. 提供以下信息来配置新工作区&#xff1a;4. 选择“创建”以创建工作区 三、创建计算实例四、工作室实战4.1 工作室快速导览4.2 从示例笔记…...

电脑监控软件哪些比较好用

电脑监控软件在当今信息化时代越来越受到人们的关注&#xff0c;它们可以用于保护公司的商业机密&#xff0c;防止员工在工作中做一些不恰当的事情&#xff0c;以及在家庭中监控孩子的上网行为等。 本文将介绍一些比较好用的电脑监控软件&#xff1a; 一、域之盾软件 这款软件…...

数据结构与算法之排序: 选择排序 (Javascript版)

排序 排序&#xff1a;把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 选择排序 该排序属于 贪心 策略关注的是局部&#xff0c;是一种苟且的东西 算法实现 // 随机数组&#xff0c;选择排序 Array.prototype.selectionSort function() {let len this.leng…...

【前端】NodeJS核心知识点整理

1.Node.js入门案例 1.1.什么是Node.js JS是脚本语言&#xff0c;脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS&#xff0c;浏览器充当了解析器的角色。而对于需要独立运行的JS&#xff0c;NodeJS就是一个解析器。 每一种解析器都是一个运行环境&#xff0c;不但…...

计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】

第三章 进程同步 【期末复习|考研复习】 计算机操作系统系列文章传送门&#xff1a; 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 文章目录 第三章 进程同步 【期末复习|考研复习】前言三、进程同步3.1 临…...

day06-Flex布局

Flex布局 目标&#xff1a;熟练使用 Flex 完成结构化布局 01-标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个。 02-浮动 基本使用 作用&#xff1a;让块元素水平排…...

架构整洁之道摘录

软件架构 软件架构规则和其他变量完全⽆关。 软件设计的终极⽬标是⽤最⼩的成本来满⾜构建和维护系统的需求。 程序设计重要的是软件架构的灵活性⽽不是先实现功能。 软件系统的第⼀价值体系是系统⾏为&#xff0c;第⼆价值体系是系统架构 编程范式 结构化编程 利⽤if/else…...

流程引擎-自定义函数的应用

背景&#xff1a; 某些业务需求比较特殊&#xff0c;需要在表单中校验或实现一些功能&#xff0c;泛微流程表单配置时实现的方式多种多样&#xff1a;JS脚本、SQL语句、公式以及其他一些标准化拖拽功能&#xff0c;本次给大家分享一下流程表单中的公式实现的一些需求场景。泛微…...

ChatGLM系列二:ChatGLM2的介绍及代码实践

一、介绍 2023年06月25日&#xff0c;清华大学开源了 ChatGLM2-6B 模型&#xff0c;是 ChatGLM 模型的升级版本。ChatGLM2-6B 在多个方面有显著提升&#xff1a;模型性能更强&#xff0c;在各种测试集上的表现更好&#xff1b;支持更长的上下文&#xff0c;最大上下文长度提升…...

JDBC对数据库进行操作

一.使用JDBC查询数据库表t_user的所有数据 1.User表 名称 数据类型 主键 是否为空 说明 ID number 是 用户编号 NAME Varchar2(50) 用户名 AGE varchar2(5) 用户年龄 BIRTH date 用户生日 PWD varchar2(20) 否 用户密码 import java.sql.Connection; import java.sql.Date; …...

unity 使用Image的RectTransform来进行判断是否点击到

public RectTransform LeftTouchArea;public RectTransform RightTouchArea;private void Update(){if (Input.GetMouseButtonDown(0)){//获取鼠标的位置Vector2 mousePos Input.mousePosition;//判断Image的坐标是否包含点击的坐标if (RectTransformUtility.RectangleContain…...

【C++】类与对象 第一篇(class,this)

目录 什么是类&#xff1f; 类的引入 class 类的两种定义方式: 声明与定义分离 类的访问限定符号 访问限定符​编辑 C中struct和class的区别是什么? 封装 类的作用域 类的实例化 类对象模型 如何计算类对象的大小 this指针 C语言和C实现Stack的对比 C语言实现…...

嵌入式软件工程师面试题——2025校招专题(四)

说明&#xff1a; 面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但在这里博主希望每一个题目&#xff0c;大家都要…...

actual combat 21——华为云从零开始项目部署(附nginx转发域名方式)

一、IP地址方式&#xff1a; 后端&#xff1a; 确保项目本地跑通建立并运行华为云流水线 前端&#xff1a; 打包&#xff08;测试环境&#xff09;手动上传 nginx&#xff1a; 配置一下即可 华为云&#xff1a; 安全组&#xff1a;暴露后端网关端口安全组&#xff1a;暴…...

@CallSuper注解方法学习

CallSuper注解是什么&#xff1f; CallSuper 是 Android 开发中使用的一个注解&#xff0c;它的主要用途是确保在子类重写父类的方法时&#xff0c;调用 super 方法。这在某些情况下是非常有用的&#xff0c;例如当你希望在重写方法时保留父类的默认行为&#xff0c;或者确保子…...

HarmonyOS ArkTS DateUtil 日期增减与日历计算完整指南

文章目录 背景一、引言二、日期增减方法详解使用示例 三、日历计算方法详解四、Demo 演示&#xff1a;日期增减结果展示五、Demo 演示&#xff1a;月历视图完整实现六、日历视图关键点解析为什么要填充前置空格&#xff1f;getLastDayOfMonth 的实现技巧 七、小结 背景 近期发现…...

从游戏引擎到仿真平台:手把手教你用AirSim+UE4搭建你的第一个无人机/自动驾驶仿真环境

从游戏引擎到仿真平台&#xff1a;构建AirSimUE4无人机与自动驾驶仿真环境实战指南当游戏引擎遇上机器人算法测试&#xff0c;会碰撞出怎样的火花&#xff1f;微软开源的AirSim项目将虚幻引擎&#xff08;Unreal Engine&#xff09;从游戏开发领域引入到自动驾驶和无人机研究的…...

当 AI Coding 进入复杂企业系统,为什么提效远没有宣传里那么美好 ?

以 Claude Code、Codex 为代表的自主编码智能体&#xff08;Coding Agents&#xff09;&#xff0c;正在以惊人的速度席卷软件开发者生态。与此同时&#xff0c;类似“10 倍开发效率”“普通人也能随手构建软件”“程序员即将失业”的说法&#xff0c;也随处可见。这种不分场景…...

2026 文章代码高亮方案选型

将基于 Prism.js 或 Highlight.js 的传统高亮方案与基于 Shiki 的现代化高亮方案进行对比&#xff0c;其核心区别在于底层解析原理的不同&#xff08;正则表达式 vs. TextMate 语法树&#xff09;。 以下是两种方案的底层原理、各自优缺点、核心对比矩阵以及适用场景的详细分析…...

从安装到排错:手把手解决Linux服务器上Nacos启动失败的十大常见问题

从安装到排错&#xff1a;手把手解决Linux服务器上Nacos启动失败的十大常见问题当你在Linux服务器上部署Nacos时&#xff0c;是否遇到过启动失败却无从下手的困境&#xff1f;作为阿里巴巴开源的服务发现和配置管理平台&#xff0c;Nacos在微服务架构中扮演着重要角色。然而&am…...

车载诊断系统(OBD)的原理、演进与未来

本文约8,167字&#xff0c;建议收藏阅读 作者 | 北湾南巷 出品 | 汽车电子与软件 引 言 在现代汽车中&#xff0c;越来越多的故障不再表现为明显的机械损坏&#xff0c;而是以“亮灯”“报码”“性能异常”等电子信号的形式出现。发动机为什么亮起故障灯&#xff1f;排放是否达…...

3分钟快速解决Windows热键冲突检测难题:Hotkey Detective终极指南

3分钟快速解决Windows热键冲突检测难题&#xff1a;Hotkey Detective终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

Pearcleaner:macOS深度清理终极指南,让磁盘空间翻倍

Pearcleaner&#xff1a;macOS深度清理终极指南&#xff0c;让磁盘空间翻倍 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经卸载了macOS应用&…...

为 Node.js 后端服务配置 Taotoken 作为大模型统一网关

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为 Node.js 后端服务配置 Taotoken 作为大模型统一网关 在构建基于大语言模型的 Node.js 后端服务时&#xff0c;直接对接多个模型…...

3大核心价值:Python通达信数据接口MOOTDX的完整应用指南

3大核心价值&#xff1a;Python通达信数据接口MOOTDX的完整应用指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX作为一款优秀的Python通达信数据接口封装库&#xff0c;为开发者提供了免…...