操作符详解
目录
操作符分类
算术操作符
+
-
*
/
%
二进制
二进制总结
移位操作符(操作数只能为整数)
<<
>>
位操作符(操作数必须为整数)
&
|
^
面试题
赋值操作符
=
复合赋值符
单目操作符
单目操作符介绍
sizeof与数组
关系操作符
逻辑操作符
面试题
条件表达式
逗号表达式
下标引用,函数调用和结构成员
[ ] 下标引用操作符
( )函数调用操作符
访问结构成员(. ->)
表达式求值
隐式类型转换
如何进行整型提升
算术转换
操作符的属性
总结:我们写出的表达式如果不能通过操作符的属性确定唯一的计算路径,那么这个表达式就是存在问题的
操作符分类
算术操作符 + - * / %
移位操作符 << >>
位操作符 & ^ |
赋值操作符 = += -= *= /= <<= >>=
单目操作符 ! sizeof + - & *
关系操作符 && ||
条件操作符(三目操作符) ? :
逗号表达式 ,
下标引用,函数调用和结构成员 [ ] ( ) . ->
算术操作符
+
a+b
-
a-b
*
a*b
/
a/b 除数不能为0
1.整数除法:符号两端是整数
2.小数除法:两个操作数只要有一个操作数是小数就执行小数除法
%
a%b 得到的是整除之后的余数
%操作符的两端必须为整数
二进制
数据在内存中存储用的是是二进制,我们用整数举例,int类型的数据是4个字节,32个bit位
最高位为符号位,0为正,1为负
如 5
它的二进制原码,反码,补码都相同
00000000 00000000 00000000 00000101
-5
原码
10000000 00000000 00000000 00000101
反码(负数的反码是在其原码的基础上,符号位不变,其余各个位取反)
111111111 111111111 111111111 111111010
补码(反码+1)
111111111 111111111 111111111 111111011
二进制总结
最高位为符号位,正数为0,负数为1
1.正数
原码,反码,补码相同
2.负数
原码
反码:负数的反码是在其原码的基础上,符号位不变,其余各个位取反
补码:反码+1
整数在计算机中存储的是补码,计算的时候也用的是补码
移位操作符(操作数只能为整数)
<<
左移操作符(左边抛弃,右边补0)
5<<1
5的补码为
00000000 00000000 00000000 00000101
左移之后
00000000 00000000 00000000 00001010 10

>>
右移操作符
一般采用算术右移
1.算术右移:右边抛弃,左边补原来的符号位
2.逻辑右移:右边抛弃,左边补0
如 5
5的补码
00000000 00000000 00000000 00000101
5>>1的补码
00000000 00000000 00000000 00000010 2

对于移位操作符,不要移动负数位
位操作符(操作数必须为整数)
&
按位与(对应二进制位有0则为0,两个同时为1,才为1)
如5&3
5的补码
00000000 00000000 00000000 00000101
3的补码
00000000 00000000 00000000 00000011
5&3的补码
00000000 00000000 00000000 00000001 1

|
按位或(对应二进制位有1则为1,同时为0才为0)
如5|3
5的补码
00000000 00000000 00000000 00000101
3的补码
00000000 00000000 00000000 00000011
5&3的补码
00000000 00000000 00000000 00000111 7

^
按位异或(对应二进制位相同为0,相异为1)
如 5^3
5的补码
00000000 00000000 00000000 00000101
3的补码
00000000 00000000 00000000 00000011
5^3的补码
00000000 00000000 00000000 00000110 6

面试题
在不能创建第三个变量的情况下,实现两个数的交换
1.加减法

缺陷:当两个数足够大的时候定义的类型就存放不下两者相加的结果】
2.按位取反法
两个数相同异或为0:a^a=0
一个数与0异或为本身a^0=a

赋值操作符
=
赋值操作符,可以給变量重新赋值
int weight=100;//不满意
weight=90;//重新赋值
复合赋值符
+= -= *= /= &= |= ^= <<= >>=
int x=10;
x=x+10; == x+=10;
单目操作符
单目操作符介绍
! 逻辑反操作
例 if(x!=7)
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度 (单位字节)
~ 对一个数的二进制位取反(0变1,1变0)
-- 前置,后置--
++ 前置,后置++
* 间接引用操作符(解引用操作符)
例 int *(类型)pa(指针变量)=&a;
* pa 这里的*就是解引用操作符,通过pa中存放的地址找到指向的空间(内容),这里找到a
(类型) 强制类型转换
sizeof与数组
sizeof(arr),整个数组的长度
sizeof(arr[0])数组中第一个元素的长度
test(arr)
void test(int arr[ ])
sizeof(arr)这里的arr是一个指针,求出来的长度为4/8
关系操作符
> >= < <= == !=
逻辑操作符
&& 逻辑与 左边为0(假),结束,右边不计算
|| 逻辑或 左边为1(真),结束,右边不计算
例如 判断闰年
if((year%4==0&&year%100!=0) || year%400==0)
面试题

求程序的输出结果
0 2 3 4
因为a++为0,&&左边为0,就结束,不计算后面
1 3 3 4
因a++为0,||继续计算,++b为3为真,停止不计算后面
条件表达式
exp1 ? exp2 : exp3
真 计算 不计算
假 不计算 计算
例如
(a>5)? b=3 : b=2
如果a>5,那么b=3
如果a<=5,那么b=2
逗号表达式
exp1 ,exp2 , exp3 , exp4 ,……
逗号表达式就是用逗号隔开的多个表达式
逗号表达式从左到右依次执行,整个表达式的结果就是最后一个表达式的结果
例
int a=1;
int b=2;
int c=(a>b,a=b+10,a,b=a+1)
求c
依次计算最后一个表达式为13
c=13
下标引用,函数调用和结构成员
[ ] 下标引用操作符
一个数组名+一个索引值
int arr[10];
arr[9]=10;
[ ]的两个操作数为arr 和 9
( )函数调用操作符
接受一个或多个操作数,第一个操作数为函数名,剩下的操作数为传递给函数的参数
test (arr ,i, k);
printf("%d",a);
int main()
访问结构成员(. ->)
. 结构体.成员名 结构体变量
-> 结构体->成员名 结构体指针
表达式求值
隐式类型转换
C语言的整型算术运算总是至少以缺省整型类型的精度来计算
为了获得这个精度,表达式中的字符和短整型操作数在使用前转换为普通整型,这种转换成为整型提升
例如
char a,b,c;
c=a+b;
a和b的值被提升为整型,再进行加法运算,加法运算完成后再截断存放在a中
如何进行整型提升
负数 高位补充符号位,即为1
正数 高位补充符号位,即为0
无符号整型提升,高位补充0
整型提升只针对于小于int的整型,只要参与表达式运算,就会发生整型提升
算术转换
如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数转换为另一个操作数的·类型,否则计算无法进行
排名较低的转换为另一个类型进行计算
long double
double
float
unsigned long int
long int
unsigned int
int
操作符的属性
复杂表达式求值有三个影响因素
1.操作符的优先级
2.操作符的结合性
3.是否控制求值顺序

总结:我们写出的表达式如果不能通过操作符的属性确定唯一的计算路径,那么这个表达式就是存在问题的
相关文章:
操作符详解
目录 操作符分类 算术操作符 - * / % 二进制 二进制总结 移位操作符(操作数只能为整数) << >> 位操作符(操作数必须为整数) & | ^ 面试题 赋值操作符 复合赋值符 单目操作符 单目操作符介绍…...
【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别
目录 一、问题描述二、概念神经网络实现手写体数字识别原理三、算法步骤3.1 数据输入3.2 特征提取3.3 模型训练3.4 测试 四、运行结果 一、问题描述 手写体数字属于光学字符识别(Optical Character Recognition,OCR)的范畴,但分类…...
数据库管理-第六十九期 另一种累(20230422)
数据库管理 2023-04-22 第六十九期 另一种累1 国产数据库沟通2 问题3 我的建议总结 第六十九期 另一种累 Oracle 23c的相关内容先缓缓,有些数据库管理相关的还是得正式版发布后才好去做实验。这周相较于之前那种割接较多的累还有点不一样,这周陪着客户交…...
Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)
Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…...
Redis系列--redis持久化
一、为什么需要持久化 redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RD…...
在外Windows远程连接MongoDB数据库【无公网IP】
文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…...
学网络安全怎么挖漏洞?怎么渗透?
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释…...
浪涌保护器:保护电子设备免受雷击侵害
引言: 随着电子设备在现代生活和工业领域的普及和广泛应用,雷击对电子设备的损害成为一个严重的问题。浪涌保护器作为一种重要的防雷设备,发挥着至关重要的作用。本文将介绍浪涌保护器的防雷作用、行业应用,并重点介绍浪涌保护器…...
js绘制的红心
看腻歪了粒子特效的红心,今天给各位整个线条的,效果图如下: 表白显圣神器,你值得拥有,代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...
十、Feign客户端
目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…...
登录appuploader
转载:登录appuploader 常规使用登录方法 双击appuploader.exe 启动appuploader 点击底部的未登录,弹出登录框 在登录框内输入apple开发者账号 如果没有apple开发者账号,只是普通的apple账号,请勾选上未支付688 然后软件会提示…...
都别吹牛逼了,2个英语指令简单评测便知ChatGPT、博弈Ai、文心一言、通义千问、讯飞星火真实水平
一、博弈Ai:GPT3.5版 演示:https://chat.bo-e.com/ 1、充当英语发言助手 评分:10分 总结:完整满足了指令需求 2、充当英汉互译器 评分:8分 总结:基本满足了我的指令需求。但是有点啰嗦,扣…...
使用Spring Boot快速搭建项目:减少配置,提升开发效率
使用Spring Boot快速搭建项目:减少配置,提升开发效率 一、Spring Boot简介1 Spring Boot的起源2 Spring Boot的核心特点3 Spring Boot的优势 二、Spring Boot快速搭建项目1 Spring Boot的项目搭建方式使用Spring Initializr创建项目使用Spring Boot CLI创…...
(2)数码管
LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字器件 51单片机是共阴极连接 74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱…...
赫夫曼树和赫夫曼编码详解
目录 何为赫夫曼树? 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树? 树的路径长度:从树根到每一结点的路径长度之和 结点的带权路径长度:从树根到该结点的路径长度…...
unity UGUI系统梳理 -交互组件
概述 unity 中的交互组件可用于处理交互,例如鼠标或触摸事件以及使用键盘或控制器进行的交互 1、按钮 (Button) Button详解 2、开关 (Toggle) Background:背景图片,控制toggle组件的背景颜色改变,从而展示此物体是否被选中的…...
HTTP第15讲——HTTP的连接管理
短连接 HTTP 协议最初(0.9/1.0)是个非常简单的协议,通信过程也采用了简单的“请求 - 应答”方式。 它底层的数据传输基于 TCP/IP,每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接。 因为客户端与…...
深度剖析Mybatis-plus Injector SQL注入器
背景 在项目中需要同时操作Sql Server 以及 MySQL 数据库,可能平时直接使用 BaseMapper中提供的方法习惯 了,不用的话总感觉影响开发效率,但是两个数据库的SQL语法稍微有点差别,有些暴露的方法并不能直接使用,所以便想…...
【Mysql实战】使用存储过程和计算同比环比
背景 同环比,是基本的数据分析方法。在各类调研表中屡见不鲜,如果人工向前追溯统计数据,可想而知工作量是非常大的。 标题复制10行,并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…...
基于Lyapunov稳定性的主从机械臂随机时延补偿控制:从MATLAB仿真到ROS实体验证
基于Lyapunov稳定性的主从机械臂随机时延补偿控制:从MATLAB仿真到ROS实体验证 摘要 针对遥操作系统中0-2s随机时延导致的主从不同步与稳定性下降问题,本文提出了一套完整的“MATLAB仿真+ROS实体”双平台解决方案。首先,采用拉格朗日方程建立二自由度主从机械臂的动力学模型…...
大型源码C# WPF开发,集成SCADA数据采集系统、数据库与远程服务器调用,多产品线程序组成...
大型源码C# MES WPF CS/BS两套 1, 整体程序由WPF(c#)开发; 2,各个文档齐全; 3,需要您对WPF和程序架构有比较深入理解; 4,包含服务程序; 5,包含SCADA数据采集…...
FPGA数字滤波器避坑指南:Quartus II FIR Compiler IP核配置的5个关键细节(附仿真失败解决方案)
FPGA数字滤波器实战精要:Quartus Prime FIR IP核配置的7个高阶技巧 当你在Quartus Prime中配置FIR Compiler IP核时,是否遇到过仿真输出全为X值,或者滤波结果与预期不符的困扰?这些看似简单的配置细节,往往成为项目推进…...
IAR开发GD32必看:TCMSRAM的另类用法——解决FreeRTOS+LwIP项目内存不足问题
IAR开发GD32实战:TCMSRAM在FreeRTOSLwIP项目中的高阶内存管理技巧 当GD32F450ZKT6遇上FreeRTOS和LwIP这对"内存饕餮",192KB的常规SRAM就像早高峰的地铁车厢——明明还有空间,却总是报"内存不足"。这时,TCMSRA…...
接口测试用例设计(超详细总结)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、接口测试用例设计简介 我们对系统的需求分析完成之后,即可设计对应的接口测试用例,然后用接口测试用例进行接口测试。接口测试用例…...
Tox与现代化工具链集成:uv、hatch等新工具实战
Tox与现代化工具链集成:uv、hatch等新工具实战 Tox作为一款命令行驱动的CI前端和开发任务自动化工具,能够帮助开发者在不同环境中自动化测试、打包和部署流程。本文将详细介绍如何将Tox与uv、hatch等现代化工具集成,提升Python项目的开发效率…...
Layui表单输入框回车键触发提交怎么拦截
回车自动提交是浏览器原生行为,非 Layui 特性;需通过原生 keydown 事件监听 Enter 键并调用 preventDefault() 拦截,可结合 class(如 allow-enter)精细化控制特定输入框放行。为什么回车会自动提交 Layui 表单layui 的…...
遗传算法优化技巧:如何用PMX交叉提升Python求解效率
遗传算法优化实战:PMX交叉在Python中的高效实现与调优 当你在解决旅行商问题(TSP)或排班优化时,是否遇到过传统交叉算子导致无效解激增的情况?部分匹配交叉(PMX)正是为解决这类排列编码问题而生的利器。作为遗传算法中最高效的交叉算子之一&a…...
SOCD Cleaner:重塑游戏输入体验的键盘映射神器
SOCD Cleaner:重塑游戏输入体验的键盘映射神器 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏的微秒级对决中,一个被忽视的技术细节往往成为胜负的关键——同时按下相反方向键…...
大麦网自动抢票脚本完整指南:从零搭建你的智能购票系统
大麦网自动抢票脚本完整指南:从零搭建你的智能购票系统 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 你是否曾经为抢不到热门演唱会门票而苦恼?当心…...
