C/C++运算符超详细讲解(系统性学习day5)
目录
前言
一、运算符的概念与分类
二、算术运算符
三、关系运算符
四、逻辑运算符
五、赋值运算符
六、运算符的优先级
总结
前言
本篇文章是对运算符的具体讲解。
一、运算符的概念与分类
概念:
运算符就是一种告诉编译器执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。在计算机编程中,运算符用于操作数据,执行各种数学和逻辑运算,并产生结果。
分类:
1.根据分类对象的多少可以分为单目运算符(又名一元运算符)、双目操作符(又名二元操作符)、三目操作符(又名三元操作符)。
2.根据运算作用不同又可以分为:算术操作符、关系操作符、逻辑操作符、位运算符、赋值运算符、杂项操作符等。
二、算术运算符
含义:
算术运算符是对数值类型变量进行运算的,属于上述的双目操作符,结合性是从左到右的,算术优先级就是我们所知的 “ * 、/ 、% ”>“ +、 -”。
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 把两个操作数相加 | x+y得到15 |
| - | 第一个操作数减去第二个操作数 | x-y得到5 |
| * | 把两个操作数相乘 | x*y得到50 |
| / | 把两个操作数相除 | x/y得到2 |
| % | 取模,结果为整除后的余数 | x%y得到0 |
| ++ | 自增运算符,整数值加一 | x++得到11 |
| -- | 自减运算符,整数值减一 | x--得到9 |
需要注意的是:
a++(a--) 与 ++a(--a)的区别,前者为先赋值后运算,后者为先运算后赋值。当其作为一个独立的语言使用时,是等价的。但是当它出现在语句中就会有所不同。
下面通过一个实例代码来帮助大家更好的理解:
#include <stdio.h>int main()
{int y;int x = 10;y = x++; printf("先赋值后运算:\n");printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );x = 10;y = x--; printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );printf("先运算后赋值:\n");x = 10;y = ++x; printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );a = 10;c = --a; printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );return 0;
}
程序运行的结果如下:

三、关系运算符
含义:
关系运算符的值只能是0或1。当运算符的值为真时,结果值都为1;反之,都为0;关系运算符也属于双目运算符,结合性为从左到右,优先级为“ > 、 < 、 >= 、 <= ” > " == 、 != "。
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 检查俩个操作数的值是否相等,如果相等则为真 | x==y为假 |
| != | 检查俩个操作数的值是否相等,如果不相等则为真 | x!=y为真 |
| > | 检查左操作数是否大于右操作数,如果符合则为真 | x>y为真 |
| < | 检查左操作数是否小于右操作数,如果符合则为真 | x<y为假 |
| >= | 检查左操作数是否大于等于右操作数,如果符合则为真 | x>=y为真 |
| <= | 检查左操作数是否小于等于右操作数,如果符合则为真 | x<=y为假 |
下面通过一个实例代码来帮助大家更好的理解:
#include <stdio.h>int main()
{int x = 20;int y = 10;int c ;if( x == y ){printf("x 等于 y\n" );}else{printf("x 不等于 y\n" );}if ( x < y ){printf("x 小于 y\n" );}else{printf("x 不小于 y\n" );}if ( x > y ){printf("x 大于 y\n" );}else{printf("x 不大于 y\n" );}int t;t = x;x = y;y = t;if ( x <= y ){printf("x 小于或等于 y\n" );}if ( y >= x ){printf("y 大于或等于 x\n" );}return 0;}
程序运行的结果如下:

四、逻辑运算符
含义:
用于连接多个条件的运算符,结果也是为真(1)或假(0),结合性为从右到左。
| 运算符 | 描述 | 实例 |
|---|---|---|
| && | 称之为逻辑与运算符,当且仅当俩个操作数都不为零时,条件为真。 | A&&B为假 |
| || | 称之为逻辑或运算符,当俩个操作数存在人一个非零时,条件为真。 | A||B为真 |
| ! | 称之为逻辑非运算符,用来逆转操作数的逻辑状态。将真变为假,假变为真。 | !(A&&B)为真 |
下面通过一个实例代码来帮助大家更好的理解:
#include <stdio.h>int main()
{int x = 20;int y = 10;if ( x && y ){printf("条件1为真\n" );}if ( x || y ){printf("条件2为真\n" );}x = 0;y = 10;if ( x && y ){printf("条件3为真\n" );}else{printf("条件3为假\n" );}if ( !(x && y) ){printf("条件4为真\n" );}return 0;
}
程序运行的结果如下:

五、赋值运算符
含义:
赋值运算符就是将某个值赋给某个指定的变量,结合性为从右到左。
| 运算符 | 描述 | 实例 |
|---|---|---|
| = | 简单的赋值运算符,把右边的操作数赋给左边操作数 | C=A+B将把A+B的值赋给C |
| += | 加且赋值运算符,把左边操作数加上右边操作数的结果赋值给左面的操作数 | C+=A相当于C=C+A |
| -= | 减且赋值运算符,把左面的操作数减右面操作数的结果赋值给左面的操作数 | C-=A相当于C=C-A |
| *= | 乘且赋值运算符,把左面的操作数乘以右边的结果赋值给左面的操作数 | C*=A相当于C=C*A |
| /= | 除且赋值操作符,把左面的操作数除以右面的操作数的结果赋值给左面的操作数 | C/=A相当于C=C/A |
| %= | 求模且赋值运算符,求两个操作数的模赋值给左边的操作数 | C%=A相当于C=C%A |
| <<= | 左移且赋值运算符 | C<<=2等同于C=C<<2 |
| >>= | 右移且赋值运算符 | C>>=2等同于C=C>>2 |
| &= | 按位与且赋值运算符 | C&=2等同于C=C&2 |
| ^= | 按位异或且赋值运算符 | C^=2等同于C=C^2 |
| |= | 按位或且赋值运算符 | C|=2等同于C=C|2 |
下面通过一个实例代码来帮助大家更好的理解:
#include <stdio.h>int main()
{int a = 21;int c ;c = a;printf(" = 的运算符实例,c 的值 = %d\n", c );c += a;printf("+= 的运算符实例,c 的值 = %d\n", c );c -= a;printf("-= 的运算符实例,c 的值 = %d\n", c );c *= a;printf("*= 的运算符实例,c 的值 = %d\n", c );c /= a;printf("/= 的运算符实例,c 的值 = %d\n", c );c <<= 2;printf("<<= 的运算符实例,c 的值 = %d\n", c );c >>= 2;printf(">>= 的运算符实例,c 的值 = %d\n", c );c &= 2;printf("&= 的运算符实例,c 的值 = %d\n", c );c ^= 2;printf("^= 的运算符实例,c 的值 = %d\n", c );c |= 2;printf("|= 的运算符实例,c 的值 = %d\n", c );return 0;
}
程序运行的结果如下:

六、运算符的优先级
含义:
运算符的优先级往往会影响一个表达式的运算的结果,比如最常见的就是乘除运算的优先级大于加减运算。
| 类型 | 运算符 | 结合性 |
|---|---|---|
| 乘除 | * / % | 从左到右 |
| 加减 | + - | 从左到右 |
| 后缀 | () [] ++ -- | 从左到右 |
| 一元 | + - ! ~ ++ --(type)* & sizeof | 从右到左 |
| 移位 | << >> | 从左到右 |
| 关系 | <<= >>= | 从左到右 |
| 相等与不等 | == != | 从左到右 |
| 位与AND | & | 从左到右 |
| 位异或XOR | ^ | 从左到右 |
| 位或OR | | | 从左到右 |
| 逻辑与AND | && | 从左到右 |
| 逻辑或OR | || | 从左到右 |
| 条件 | ?: | 从右到左 |
| 赋值 | = += -= *= /= %= >>= <<= &= ^= |= | 从右到左 |
| 逗号 | , | 从左到右 |
总结
本篇文章详细地讲了C语言的运算符,希望能够帮到大家!
以后还会给大家展现更多关于C语言的其他重要的基础知识,感谢大家支持懒大王!
希望这篇博客能给各位朋友们带来帮助,最后懒大王请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!
相关文章:
C/C++运算符超详细讲解(系统性学习day5)
目录 前言 一、运算符的概念与分类 二、算术运算符 三、关系运算符 四、逻辑运算符 五、赋值运算符 六、运算符的优先级 总结 前言 本篇文章是对运算符的具体讲解。 一、运算符的概念与分类 概念: 运算符就是一种告诉编译器执行特定的数学或逻辑操作的符…...
Android 遍历界面所有的View
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、实践四、 推荐阅读 一、导读 我们…...
建筑能源管理(1)——建筑能源管理的概念
1、什么是建筑能源管理 目前,主要有三种不同的类型能源管理: (1)节约型能源管理 又称“减少能耗型”能源管理。这种管理方式着眼于能耗数量上的减少,采取限制用能的措施。例如,在非人流高峰时段停开部分电梯、在室外气温特别高时…...
SpringSecurity
明文存储密码,前加{noop}...
C++ vector模拟实现
目录 一.默认成员函数 二.扩容相关函数 三.[]重载 四.修改函数 五.迭代器 继上次写完string之后,可以写一个vector练练手以及熟悉其底层。vector是一个顺序表,相比普通数组不同点在于顺序表的数据必须是连续存放的。 一.默认成员函数 string是只存放字符…...
BUUCTF:[GYCTF2020]FlaskApp
Flask的网站,这里的功能是Base64编码解码,并输出 并且是存在SSTI的 /hint 提示PIN码 既然提示PIN,那应该是开启了Debug模式的,解密栏那里随便输入点什么报错看看,直接报错了,并且该Flask开启了Debug模式&am…...
好玩的调度技术
好玩的调度技术 文章目录 好玩的调度技术前言一、乱金柝-空间剥离二、拖拽编辑三、全端兼容 前言 最近感觉自己抑郁了,生态技术实在太庞大太复杂,所以我决定先停一段时间,在停下写生态的这两天写了几个调度的小玩意换换脑子,很有…...
Android 自定义加解密播放音视频(m3u8独立加密)
文章目录 背景加密流程音视频解密音视频播放结语 背景 当涉及App内部视频的时候,我们不希望被别人以抓包的形式来爬取我们的视频大视频文件以文件方式整个加密的话需要完全下载后才能进行解密当前m3u8格式虽然支持加密,但是ts格式的小视频可以独立播放的…...
常见的文件格式
一、C:\fakepath\新建文本文档.txt [object String] 实现方式: <input onchange"test(this.value)" type"file"></input><script>function test(e){console.log(e,Object.prototype.toString.call(e))}</script> 二、…...
浏览器输入url后回车展开过程
当你在浏览器中输入一个URL并敲下回车后,浏览器会执行一系列步骤来访问并展示网页。下面是浏览器访问网页的一般流程: DNS解析:浏览器首先会提取URL中的主机名,然后向DNS服务器发送请求,将主机名解析为对应的IP地址。这…...
Docker 容器创建命令说明
使用命令如下: docker run -itd --name=cluster -v /home/ClusterApp/cluster:/home/ClusterApp/cluster --restart=always --privileged=true -p 12000:12000 python:3.8 命令说明: docker run 创建一个容器并运行 docker run --help 可以查看所有的参数: 命令中参数说明 -…...
西瓜书读书笔记整理(六)—— 第六章 支持向量机
第六章 支持向量机 6.1 间隔与支持向量6.1.1 什么是支持向量机6.1.2 支持向量与间隔6.1.3 支持向量机的求解过程 6.2 对偶问题(dual problem)6.2.1 什么是对偶问题6.2.2 如何求解支持向量机的对偶问题 6.3 核函数(kernel function)…...
蓝桥杯每日一题2023.9.23
4961. 整数删除 - AcWing题库 题目描述 分析 注:如果要进行大量的删除操作可以使用链表 动态求最小值使用堆,每次从堆中取出最小值的下标然后在链表中删除 注意long long 代码解释: while(k --){auto t q.top();q.pop();res t.first;i…...
C语言数组和指针笔试题(三)(一定要看)
目录 字符数组四例题1例题2例题3例题4例题5例题6例题7 结果字符数组五例题1例题2例题3例题4例题5例题6例题7结果字符数组六例题1例题2例题3例题4例题5例题6例题7 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个…...
leetcode11 盛水最多的容器
题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 示例 输入:[1,8,6,2,5,4,8,…...
进入数据结构的世界
数据结构和算法的概述 一、什么是数据结构二、什么是算法三、如何去学习数据结构和算法四、算法的时间复杂度和空间复杂度4.1 算法效率4.2 大O的渐进表示法4.3 时间复杂度4.4 空间复杂度4.5 常见复杂度对比 一、什么是数据结构 数据结构是计算机存储、组织数据的方式。&#x…...
stm32之看门狗
STM32 有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,窗 口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同…...
纤维蛋白单体(FM)介绍
纤维蛋白单体(FM)是血栓形成的早期产物,是纤维蛋白原(Fibrinogen,Fbg)在凝血酶(Thrombin)的作用下,脱掉肽A(Fibrinopeptide A,Fp A)与…...
知识图谱实战导论:从什么是KG到LLM与KG/DB的结合实战
前言 本文侧重讲解: 什么是知识图谱LLM与langchain/数据库/知识图谱的结合应用 比如,虽说基于知识图谱的问答 早在2019年之前就有很多研究了,但谁会想到今年KBQA因为LLM如此突飞猛进呢 第一部分 知识图谱入门导论 //待更.. 第二部分 LLM与…...
第5章 会话与会话技术
第5章 会话与会话技术 一. 单选题(共5题,50分)二. 判断题(共5题,50分) 一. 单选题(共5题,50分) (单选题) 阅读下面代码: Book book BookDB.getBook(id)…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
