C语言——操作符详解

前言:这篇文章主要讲解一下C语言中常见的操作符的使用,做一下整理,便于日后回顾,同时也希望能帮助到大家。 

🎬个人简介:努力学习ing

📝CSDN主页 愚润求学

🌄每日鸡汤:念念不忘,必有回响!

一,操作符的分类

下面给出一些常用的操作符:

●   算术操作符: +    -    *    /    % 

●   位移操作符: <<     >> 

●   位操作符:    &   |   ^

●   赋值操作符:=   +=   -=   *=   /=   ···

●   单目操作符:!   ++   --   &   *   -   +   ~   sizeof(类型)  

●   关系操作符:>   >=   <   >=   ==   !=

●   逻辑操作符:&&     ||

●   条件操作符:?   : 

●   逗号表达式:,   ,   , ···

●   下标引用操作符:[ ]

●   函数调用操作符:( )

1,算术操作符

C语言中算术操作符的运算规则也就是我们日常数学里面的加,减,乘,除,取模

值得注意的是:

1,若果数据的类型都为整形(int),则:/ 运算后,只保留整数部分

2,运算中,若运算对象类型不同,会先把低等级类型的数转换为对应的高等级类型,再进行运算

2,位移操作符

了解位移操作的基础是:

1,要了解二进制

2,知道整数二进制的三种表示方法:原码,反码,补码

在已有上面的基础后,接下来介绍一下位移操作符:

1) 按位左移( << )

位移规则:

左边抛弃,右边补0(对于整型数据左移一位相当于乘以2

书写格式:

整形数据 << 左移位数

如:

5<<2  和  -5<<2

即:00000101<< 2,得  00010100(十进制的20)

        11111011 << 2,得  11101100(十进制的 -20)

 2)按位右移( >> )

位移规则:

左边用原来值的符号位填充(即负数补1,正数补0),右边抛弃

格式:

整形数据 >> 左移位数

如:

5>>2  和  -5>>2

即:00000101>> 2,得  00000001(十进制的1)

        11111011 >> 2,得  11111110(十进制的 -2)

 注意:

1,都是对整型数据二进制的补码进行位移

2,对于移动的位数不能是负数

3,位操作符

操作的对象都是整型数据的二进制的补码

1)按位与(&)

规则:

对应位,只要有0:结果就是0, 两个都是1:结果才是1

例如:

5&4相当于:

 2)按位或( | )

 规则:

对应位,只要有1:结果就是1, 两个都是0:结果才是0

 例如:

5 | 4相当于:

 3)按位异或( ^ )

规则:

对应位,相同则为0,不同则为1

例如:

5 ^ 4相当于

 4)按位取反( ~ )

 规则:

对应位,取相反的(即1变0,0变1

例如:

4,赋值操作符

理清楚:赋值操作符最后的落脚点都在赋值

=的作用就是赋值,如:

a = 2;   //意思是:把2这个值赋给a

+=    -=    *=    /=   其实逻辑是一样的,这里举两个例子:

a += 2;    等效于a = a + 2    //意思是进行a + 2的运算,把所得的值赋给a

a *=2;      等效于a = a * 2    //意思是进行 a * 2 的运算,再把所得的值赋给a

 5,单目操作符

单目操作符的特点是:只有一个操作数,且运算优先级较高

ps:因为单目操作符里面的操作对象涉及很多其他知识,所以在此先不做过多讲解

6,关系操作符

关系操作符顾名思义是用来判断两个数之间的关系的,和数学中我们所用到的大于(>),大于或等于(>=)……使用理解上没有什么太大区别

值得一提的是:

1,判断两数是否相同要用(==),因为一个=的是赋值操作符

2,!= 的意思是:“不等于”  ,如:a!=b  就是说:a的值不等于b的值

7,逻辑操作符

1)并且(&&)

(表达式1)&&(表达式2):需要&&左右两边都为真,才为真,只要有一个为假,则为假

注意短路:当第一个表达式1为假时,已经可以判断为假了,就不会再计算表达式2

2)或者(||)

(表达式1)||(表达式2):只要表达式1或者2有一个为真,就为真,只有都是假,才为假

注意短路:当第一个表达式1为真时,就可以判断为真了,就不会再计算表达式2

 8,条件操作符

格式:

表达式1 ?表达式2:表达式3

规则:

先判断表达式1,如果为真,就执行表达式2,否则执行表达式3

例如:

a>b?a:b      //如果a>b成立,就取a的值,否则取b的值

 9,逗号表达式

格式:

表达式1,表达式2,···,表达式n

规则:

从左向右结合,依次运算表达式的值,最后整个运算的结果就是表达式n运算的值

例如:

x=5+1,x*=6,x+1

先计算x=5+1得x=6,再计算6*6得36,最后再计算36+1=37,则整个表达式的值为37

 还有很多运算符由于涉及的知识比较多或者其他因素,不方便单独讲解,所以在这里不做讲解

最后附上各运算符的优先级以及结合性:

参考:C 运算符优先级 - cppreference.com


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!

嘿嘿,王子,公主请一键三连!(✪ω✪)

感谢大家的观看和支持!最后,☺祝愿大家天天开心!!!

 念念不忘,必有回响!

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

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

相关文章

大数据的技术运用:探索未来的无限可能性

随着科技的不断进步和社会信息的快速增长&#xff0c;大数据已成为一个热门话题。本文将探讨大数据技术在多个领域的应用&#xff0c;以及它对未来的影响和无限可能性。 导言 在过去的几十年里&#xff0c;大数据技术取得了惊人的发展&#xff0c;它不仅改变了企业的经营方式&a…

大模型LLM 在线量化;GPTQ\AWQ量化

1、大模型LLM 在线量化 参考:https://www.cnblogs.com/bruceleely/p/17348782.html ##8bit model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(8).half(

开源与闭源:数字化时代的创新与合作之争

引言&#xff1a; 在数字化时代&#xff0c;开源与闭源软件的辩论一直是技术界的热门话题。特斯拉CEO马斯克最近公开表示&#xff0c;OpenAI不应该闭源&#xff0c;而自家首款聊天机器人将开源。这一表态引发了广泛的讨论和思考。本文将从不同角度探讨开源与闭源软件的优势与劣…

odoo17 web.assets_web.min.js 赏析

odoo17 web.assets_web.min.js 赏析 前文说到&#xff0c;odoo17的前端js做了大量裁剪优化&#xff0c;最终打包成了一个文件assets.web.js 稍微看一下这个文件的结构 web.assets_web.min.js 行 1: /* /web/static/src/module_loader.js */ 行 173: /* /web/static/…

数据中心标签的重要性

布线标签的实施是为了为用户今后的维护和管理带来最大的 便利&#xff0c;提高其管理水平和工作效率&#xff0c;减少网络配置时间&#xff0c;标签标识系统包括三个方面:标识分类及定义,标签和建立文档。 标签、标识的分类有哪些? 数据中心内的每一电缆、光缆、配线设备、端…

解决网络编程中的EOF违反协议问题:requests库与SSL错误案例分析

1. 问题背景 近期&#xff0c;一个用户在使用requests库进行网络编程时遭遇到了一个不寻常的问题&#xff0c;涉及SSL错误&#xff0c;并提示错误消息为SSLError(SSLEOFError(8, uEOF occurred in violation of protocol (_ssl.c:661)),))。该用户表示已经采取了多种方法来解决…

109.firefly-extboot的生成脚本

内核版本&#xff1a; 4.4.194 在firefly的sdk 2.5.1c及以后的版本都是extboot.img&#xff08;对应表中的extboot&#xff09; 但是之前的并不是&#xff0c;而且一个boot.img&#xff0c;&#xff08;对应表中rkboot&#xff09; rkboot的生成方法可以参考解决linux5.15编…

【数据机构】最小生成树(prim算法)

一.引例 在n个城市之间建设通信网络&#xff0c;至少需要架设多少条通信线路&#xff1f;如果每两个城市之间架设通信线路的造价是不一样的&#xff0c;那么如何设计才能使得总造价最小&#xff1f; 二.生成树与生成森林 生成树&#xff1a;n个顶点的连通图G的生成树是包含G中…

解决 vite 4 开发环境和生产环境打包后空白、配置axios跨域、nginx代理本地后端接口问题

1、解决打包本地无法访问空白 首先是pnpm build 打包后直接在dist访问&#xff0c;是访问不了的&#xff0c;需要开启服务 终端输入 npm install -g serve 然后再输入 serve -s dist 就可以访问了 但要保证 路由模式是&#xff1a;createWebHashHistory 和vite.conffig.j…

【MySQL】MVCC(多版本并发控制)详解

MVCC MVCC概述 MVCC&#xff0c;全称 Multi-Version Concurrency Control &#xff0c;即多版本并发控制。MVCC 是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。 MVCC就是在ReadCommitte…

docker 容器

目录 简介 什么是docker 容器和镜像&#xff08;contalners&#xff09; 容器和虚拟机 了解docker三个重要概念 &#xff08;1&#xff09;image镜像 &#xff08;2&#xff09;container容器 &#xff08;3&#xff09;repostory仓库 docker的简单使用 安装docker …

车载通信架构 —— 新车载总线类型下(以太网)的通信架构

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

HTTP四种请求方式,状态码,请求和响应报文

1.get请求 一般用于获取数据请求参数在URL后面请求参数的大小有限制 2.post请求 一般用于修改数据提交的数据在请求体中提交数据的大小没有限制 3.put请求 一般用于添加数据 4.delete请求 一般用于删除数据 5.一次完整的http请求过程 域名解析&#xff1a;使用DNS协议…

如何进行手动脱壳

脱壳的目的就是找到被隐藏起来的OEP&#xff08;入口点&#xff09; 这里我一共总结了三种方法&#xff0c;都是些自己的理解希望对你们有用 单步跟踪法 一个程序加了壳后&#xff0c;我们需要找到真正的OEP入口点&#xff0c;先运行&#xff0c;找到假的OEP入口点后&#x…

多参数训练Isolation Forest

如果你要使用两个指标作为入参训练 Isolation Forest 模型&#xff0c;你需要将这两个指标合并成一个特征向量&#xff0c;然后将这个特征向量作为模型的输入。具体来说&#xff0c;你需要将每个数据点的两个指标组合成一个二元组&#xff0c;然后将这些二元组组成一个矩阵&…

SSD主控

《深入浅出SSD》学习中… 文章目录 《深入浅出SSD》学习中.....一、SSD主控二、PCIe和NVMe控制器前端子系统1.PCIe控制器2.NVMe控制器 一、SSD主控 就是类似电脑CPU的东西&#xff0c;在SSD中收取处理Host端的命令&#xff0c;管理NAND闪存 二、PCIe和NVMe控制器前端子系统 主…

AIGC之Stable Diffusion

AIGC是什么? AIGC:Artificial Intelligence Generated Content,生成式人工智能。通俗一点来讲,对AI下达指令任务,通过处理人的自然语言,自动生成图片、视频、音频等等。 Stable Diffusion 官网:https://stablediffusionweb.com/ 介绍:stablediffusionweb.com is an eas…

利用小批量训练的方法在子图中进行消息传递

如果用户只想更新图中的部分节点&#xff0c;可以先通过想要囊括的节点编号创建一个子图&#xff0c; 然后在子图上调用 update_all() 方法。例如&#xff1a; nid [0, 2, 3, 6, 7, 9] sg g.subgraph(nid) sg.update_all(message_func, reduce_func, apply_node_func)同时也…

关于Unity自带的保存简单且持久化数据PlayerPrefs类的使用

Unity的PlayerPrefs类是用于在游戏中保存和读取玩家偏好设置或其他简单数据的工具。它提供了一种简单的键值对存储方式&#xff0c;可以在游戏中持久化保存数据。 PlayerPrefs提供了三种类型的数据的处理&#xff1a;分别是int,float,string。 具体使用方法如下&#xff1a; …

深度学习之基于CT影像图像分割检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于CT影像的图像分割检测系统可以被设计成能够自动地检测出CT图像中的病变部位或解剖结构&#xff0c;以协助医生进…