操作符知识点大全(简洁,全面,含使用场景,演示,代码)

news2024/11/28 21:44:34

目录

一.算术操作符

1.要点: 

二.负数原码,反码,补码的互推

1.按位取反操作符:~(二进制位)

2.原反补互推演示 

三.进制位的表示

1.不同进制位的特征:

2.二进制位表示

3.整型的二进制表示

 四.移位操作符

1.左移操作符 

2.右移操作符

五.位操作符

1.使用禁忌:

2.位操作符一览:

3.位操作符的注意要点:

4.位操作符使用演示:

5.位操作符的应用:“不创建临时变量实现两个数的交换”

6.位操作符的应用:“求一个整数存储在内存的二进制中1的个数”

法一:利用移位操作符

法二: 利用二进制原理

六.赋值操作符

 1.连续赋值(接收上一个运算的返回值)

 2.复合赋值符

七.逻辑操作符 

1.逻辑操作符一览

2.区分 “逻辑与或” 和  “按位与或” 

3.经典例题 

例1:逻辑与的“短路特性”——前面为0判定时,后面不操作

例2:逻辑或的“反短路特性”——前面为真判定时,后面不操作

八.单目操作符

1.单目操作符一览

2.sizeof特性与操作规范 (操作数的类型长度)

九.其他操作符

1.下标引用操作符

2.函数引用操作符

3.访问结构的成员操作符

九.算术转换

十.隐式类型转换

1.概述:

2.整型提升:

一.正负数的整型提升

3.截断: 

十一.问题表达式问题

原理:优先级虽然存在,但与执行的次序存在不确定性

例1:无法判断三个fun( )哪个先执行

例2:无法判断是c开始先去+"--c",还是先执行--c再+c

十二.逗号表达式

1.逗号表达式

2.逗号表达式的实际应用——简化代码


一.算术操作符

+    -    *    /   %


1.要点: 

  1. 除了%操作符之外,其他操作符都可以作用于整数浮点数
  2. 对于/操作符如果两个操作数都为整数,则执行整数除法;只要有浮点数浮点数除法
  3. %操作符的两个操作数必须为整数。返回的是整除后的余数
  4. 除法 / 想要得到小数,保证除数和被除数中至少有一个是浮点数

        (5.0/2——>2.5)


二.负数原码,反码,补码的互推


1.按位取反操作符:~(二进制位)

~:二进制位0变1,1变0

00000000000000000000000000000001
11111111111111111111111111111110 按位取反后

2.原反补互推演示 

原理:

 例子:


三.进制位的表示


1.不同进制位的特征:

进制位的表示范围都为(0~进制位-1)

例:10进制位(0~9)   8进制位(0~7)


2.二进制位表示

进制位从右往左,分别代表进制位的数×进制位的0到若干次方

例:二进制表示15


3.整型的二进制表示

 四.移位操作符


1.左移操作符 

  • 补码移动,空缺补0
  • 左移效果:扩大二倍 (负数也适用,例:4->8,-4->-8)

    ​​​​​

PS:涉及原反补码的运算,不清楚+1-1的可以看本博客原反补码块知识点

图示: 


2.右移操作符

  • 逻辑右移:左边丢弃,左边补0
  • 算术右移(正负数):右边丢弃,左边补原符号位(保持原来的符号位)

    

 图示:


五.位操作符


1.使用禁忌:

  • 不要移动负数位,此行为未定义!

       


2.位操作符一览:

1.按位与&:有0为0,全1为1

2.按位或 |:有1为1,全0为0

3.按位异或^:相同为0,相异为1


3.位操作符的注意要点:

  • 他们的操作数必须是整数
  • 位操作的应用场景,一般是补码层面的运算

4.位操作符使用演示:


5.位操作符的应用:“不创建临时变量实现两个数的交换”

原理:

  • 任何数 和0 亦或^都是它自己两个相同的数亦或^都为0
  • 运算后不会发生进位
int main()
{
  int a=10;
  int b=20;
  //二进制层面,每一位只有0/1两种可能
  a=a^b;   此时,a相当于在二进制层面上,原来ab两数二进制各位的集合
  b=a^b;   根据相同数亦或为0,b中存储的是集合排除掉b后的结果,即本来的a
  a=a^b;   根据相同数亦或为0,此时存储的是集合排除掉本来的a后的结果,即b
}

6.位操作符的应用:“求一个整数存储在内存的二进制中1的个数”


法一:利用移位操作符

原理:按位与&1,按位右移。统计32次后按位与1结果之和

代码演示: 

int main()
{
  int count=0;
  for(int i=0;i<32;i++)
 {
    if((n>>1)&1)==1)
    {
      count++;
    }
 }
   return 0;
}

法二: 利用二进制原理

原理:

  • 模%2相当于拿到二进制位中的最右边一位
  • 除/2相当于拿到二进制位中的最右边边以外的二进制序列


六.赋值操作符


 1.连续赋值(接收上一个运算的返回值)


 2.复合赋值符


七.逻辑操作符 


1.逻辑操作符一览

  • &&:逻辑与
  • ||:逻辑或

2.区分 “逻辑与或” 和  “按位与或” 

 


3.经典例题 


例1:逻辑与的“短路特性”——前面为0判定时,后面不操作


例2:逻辑或的“反短路特性”——前面为真判定时,后面不操作


八.单目操作符


1.单目操作符一览


2.sizeof特性与操作规范 (操作数的类型长度)

操作规范:

特性:sizeof内部操作不改变原值

 PS:截断过程


九.其他操作符


1.下标引用操作符


2.函数引用操作符

():接受一个或多个操作数:第一个操作数是函数名,其余的操作数就是传递给函数的参数

演示:

 


3.访问结构的成员操作符

演示: 


九.算术转换


十.隐式类型转换


1.概述:


2.整型提升:


一.正负数的整型提升

方法:高位补符号位


3.截断: 

  • 与整型提升(char赋值给int)相对的,当int(整型)赋值给char时,会发生截断。
  • 运算时依照规定又要进行整型提升

  • 涉及到运算时,才会发生截断


十一.问题表达式问题


原理:优先级虽然存在,但执行的次序存在不确定性

 


例1:无法判断三个fun( )哪个先执行


例2:无法判断是c开始先去+"--c",还是先执行--c再+c

 


十二.逗号表达式


1.逗号表达式

  • 逗号表达式,就是用逗号隔开的多个表达式
  • 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果

2.逗号表达式的实际应用——简化代码

优化前:

a=get_val();
count_val(a);
while(a>0)
{
   业务处理
   a=get_val();
   count_val(a);
}

优化后:

a=get_val();
count_val(a);
while(a=get_val(),count_val(a),a>0)
{
   业务处理
}

 

 

 

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

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

相关文章

如何利用python实现灰色关联分析?

1.灰色关联分析简介 灰色系统这个概念是相对于白色系统和黑色系统而言的。从控制论的知识里&#xff0c;颜色一般代表对于一个系统我们已知信息的多少&#xff0c;白色代表信息量充足&#xff0c;黑色代表我们其中的构造并不清楚的系统&#xff0c;而灰色介于两者之间&#xf…

WhatsApp如何让客户参与变得更简单?

WhatsApp对你的品牌来说可能和Twitter和Facebook一样重要&#xff0c;你可能已经把它们纳入你的社交媒体战略。 是的&#xff0c;WhatsApp不仅仅可以用来给同事发短信或与远方的亲戚视频聊天&#xff0c;它也适用于商业。 在发展WhatsApp业务时&#xff0c;小企业主得到了最优…

K8s基础9——服务发现Coredns、Ingress Controller多种暴露方式、TLS+DaemonSet、Headless Services

文章目录 一、服务发现机制1.1 环境变量注入1.2 DNS解析 二、Ingress4.1 部署Ingress controller4.2 暴露Ingress Controller4.2.1 SVC NodePort方式4.2.2 共享宿主机网络方式 4.3 默认后端4.4 同域名不同URL转不同服务4.5 不同域名转不同服务4.6 使用https4.6.1 安装cfssl4.6.…

如何用 Serverless 一键部署 Stable Diffusion?

作者 | 寒斜&#xff08;阿里云智能技术专家&#xff09; 思路 其实很简单&#xff0c; 我们只需要将镜像里面的动态路径映射到 NAS文件存储里面即可&#xff0c;利用 NAS 独立存储文件模型&#xff0c;扩展&#xff0c;语言包等&#xff0c;并且我们可以为管理 NAS 单独配置…

使用Python和Django构建一个全功能的在线医疗问诊平台

在线医疗问诊平台应运而生&#xff0c;为患者和医生之间提供了一个便捷的交流平台。本文将介绍如何使用Python和Django构建一个全功能的在线医疗问诊平台。 功能 在我们的平台上&#xff0c;患者可以注册账户、查询医生、预约诊断、支付费用并与医生沟通。医生可以创建个人档…

【.NET CORE】使用Rotativa.AspNetCore将网页转换为PDF

插件功能&#xff1a;将在线网页转换为PDF显示&#xff0c;文件保存 组件配置&#xff1a; 1、在NuGet管理中搜索Rotativa.AspNetCore并安装稳定版&#xff0c;项目github地址&#xff1a;GitHub - webgio/Rotativa.AspNetCore: Rotativa for Asp.Net Core 2、github下载项目…

Docker安装部署MySQL

1、拉取镜像 docker pull mysql:8.0 2、查看镜像 docker images 3、创建文件夹 mkdir ~/mysql cd mysql/ 4、创建并启动MySQL容器 docker run -id \ > -p 3306:3306 \ > --namec_mysql \ > -v $PWD/conf:/etc/mysql/conf.d \ > -v $PWD/logs:/logs \ > -…

Vue Emelent-UI表格合并行或列rowspan和colspan的作用

Vue Element-UI的table组件支持合并行或者列&#xff0c;在这里做个简单的学习笔记。 我们可以通过rowspan和colspan来进行单元格合并&#xff0c;那么这两个属性是什么意思呢&#xff0c;通过官方给的demo来探讨下。 上述单元格将行index为奇数的第一列和第二列合并为一个单…

python dict 取值方法

在日常工作中&#xff0c;我们经常会遇到需要将一些数据转换为 dict格式的情况。比如&#xff1a; 1、想要将多个数组按照某种规则进行排列&#xff0c;形成有序的数据表&#xff0c;这时需要使用 dict函数。 3、想要将数据按照指定的方式进行存储&#xff0c;比如&#xff1a;…

Maven自定义配置

修改maven默认字符编码 maven默认编码为GBK 注:配好MAVEN_HOME的环境变量后,在运行cmd. 打开cmd 运行mvn -v命令即可. 修改UTF-8为默认编码.设置系统环境变量 变量名MAVEN_OPTS 变量值-Dfile.encodingUTF-8 还可以添加其他配置&#xff0c;比如&#xff1a; -Xms256m -Xmx512m…

IDEA编译JDK1.8源码及运行测试

———————————————— 版权声明&#xff1a;本文为CSDN博主「神韵499」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/qq_41055045/article/details/112002440 ————…

【Qt编程之Widgets模块】-004:QTableWidget及基本操作

QTableWidget及基本操作 1. 概述2. 主要操作函数2.1 QTableWidgets实例化2.2 设置表头 setHorizontalHeaderLabels2.3 单元格选择&#xff1a;setSelectionBehavior2.4 设置列数 setColumnCount2.5 设置行数 setRowCount2.6 网格的显示 setShowGrid2.7 添加表项 setItem2.8 表项…

常见的锁和zookeeper

zookeeper 本文由 简悦 SimpRead 转码&#xff0c; 原文地址 zhuanlan.zhihu.com 前言 只有光头才能变强。 文本已收录至我的 GitHub 仓库&#xff0c;欢迎 Star&#xff1a;https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列&#xff1f;以后&#xff0c;本来…

Ubuntu 20.04.5 LTS x86_64 Docker stable diffusion webui 及 http api接口

资源 Docker镜像 docker pull darkroot1234/ayanami:latest 参考地址&#xff1a; docker一键运行stable diffusion webui&#xff0c;常用插件和功能完备&#xff0c;获得镜像后可打包带走 - 哔哩哔哩 nvidia cuda 驱动 https://us.download.nvidia.cn/XFree86/aarch64/…

Django框架005:阶段性`实战小案例`“答辩“公司员工表

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

基于 DDR3 的串口传图帧缓存系统设计实现(整体设计)

文章目录 前言一、串口传图顶层系统设计框图二、各模块说明三、系统工程及 IP 创建四、uart_ddr3_tft模块五、uart_ddr3_tft模块仿真文件六、uart_ddr3_tft模块仿真文件 前言 结合串口接收模块和 tft 显示屏控制模块&#xff0c;设计一个基于 DDR3 的串口传图帧缓存系统。 提示…

DES加密算法、RSA加密算法

DES加密算法 DES加密过程 1、将明文和密钥转化为ASCII码&#xff0c;明文64位bit&#xff0c;密钥56位 2、明文进行初始置换 3、明文初始置换后前32位为L0&#xff0c;后32位为R0 4、第一轮算法&#xff0c;L1R0&#xff0c;R0进行F运算后跟L0异或的结果为R1 5、F运算&#x…

jmeter如何测试一个get请求

目录 1.配置测试计划1.1.创建线程组1.2.创建GET的HTTP请求取样器&#xff08;模拟GET请求&#xff09;1.3.添加查看结果树和聚合报告 2.执行压测并查看结果2.1.验证接口2.2.执行压力测试 使用jmeter测试一个http的get请求示例. 1.配置测试计划 1.1.创建线程组 打开jmeter - 测…

C语言实现扫雷(包含递归展开)

目录 一&#xff1a;扫雷游戏的基础逻辑 二&#xff1a;关于扫雷相关的信息存储 三&#xff1a;游戏大体实现逻辑 四&#xff1a;具体实现 (1)初始化 (2)打印 (3)布置雷 (4)查雷 五&#xff1a;全部代码 (1)game.h (2)game.c (3)test.c 六&#xff1a;实际效果演示…

【操作系统复习】第6章 虚拟存储器 2

请求分页中的内存分配 在为进程分配物理块时&#xff0c;要解决下列的三个问题&#xff1a; 1. 保证进程可正常运行所需要的最少物理块数 2. 每个进程的物理块数&#xff0c;是固定值还是可变值&#xff08;分配策略&#xff09; 3. 不同进程所分配的物理块数&#xff…