操作符续(整型提升与算术转换)

news2025/2/22 0:18:26

 

🤩本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。

🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,希望可以帮到读者们哦。

🥴内容分享:本期会对C语言中的重点知识操作符进行具体讲解,各位看官姥爷快搬好小板凳坐好叭。

😘:不要998,只要一键三连,三连买不了吃亏,买不了上当(写作不易,拜托拜托)


目录

🥕前言

🫑逻辑操作符

🫓条件操作符

 🍟逗号表达式

🌭下标引用,函数调用和结构体成员

🍛表达式求值

🥘隐式类型转换(整型提升)

🥗算术转换

🍿操作符的属性

🍚总结


🥕前言

上期,我们对操作符的的算术,移位,位,赋值,复合赋值,单目,关系操作符进行了讲解,这期我们将会讲到逻辑,条件操作符和逗号表达式,下标引用,函数调用,结构成员和表达式求值中的整型提升和算术转换。我们会对整型提升和算术转换进行重点的分析。

🫑逻辑操作符

&&      逻辑与

 ||        逻辑或

区分逻辑与和按位或  

区分逻辑或和按位或

🫓条件操作符

exp1 ?  exp2 : exp3

理解:exp1为真,表达式为exp2,exp1为假,表达式为exp3.

 🍟逗号表达式

exp1, exp2, exp3, ......expN

逗号表达式就是用逗号隔开的表达式。

逗号表达式,从左向右依次计算,整个表达式的结果就是最后一个表达式的结果。

🌭下标引用,函数调用和结构体成员

1. [] 下标引用操作符

操作数:一个数组名 + 一个索引值

int arr[10 ];  创建数组

arr [4] = 10; 下标引用操作符

[] 的操作数为arr和4

2. ()函数调用操作符

接受一个或者多个操作符:第一个操作数是函数名,剩下的操作符就是传递给函数的参数。

3. 访问一个结构的成员

.                结构体.成员名

 ->            结构体->成员名

🍛表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性觉决定的。 

同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型

🥘隐式类型转换(整型提升)

C语言的整型算术运算总是至少以缺省整型类型的精度来进行的,我个人的理解是:C语言算术运算中字节数少于整型字节数的数据类型在进行整形运算中会被转化为整型数据,这个过程就被成为被称为整型提升。

整型提升的意义:

一般表达式的整型计算是在电脑上的CPU相应的运算器执行,然而CPU的运算器ALU的操作数的字节大小一般是int类型的字节大小,其次CPU中的寄存器的大小也等于int类型的字节大小,而我们知道,数据在被运算的时候不是直接储存在ALU中,而是储存在储存器当中,但通常ALU的字节大小与寄存器的字节大小相等。所以小于4个字节的整型在相加时,在CPU中通常会先转化为CPU中操作数的标准字节长度。

一般cpu是难以实现两个字节的直接相加运算。所以,一般长度小于int类型的整型值,都必须转化为int或unsigned int类型再送入CPU中计算。
如何整型提升:

整型提升时按照变量的数据类型的符号位来提升的

1 如果是无符号的,则高位都补0

2 如果是有符号的,则高位都补符号位

注:在计算机中任何数据储存都是二进制的补码

 

🥗算术转换

如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系为寻常算术转换。

long double
double
float
unsigned long int
long int
unsigned int
int

🍿操作符的属性

复杂表达式的求值有三个影响的因素:

1. 操作符的优先级

2. 操作符的结合性

3. 是否控制求值顺序

两个相邻操作符取决于它们的优先级。如果两者优先级一样,取决于它们的结合性。

下面是部分操作符的优先级:

🍚总结

到这里,操作符的全部内容已经全部分析完了。对于操作符,看是不起眼,但是在c语言中它具有螺丝钉的作用,大家还是得重视重视它们。下一期文章我们将会对c语言中人人害怕的指针下手了,其实我认为它也没那么可怕叭,进行合理的理解就行咯。那大家还是对下一篇指针文章期待一下叭。 

 

 

 

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

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

相关文章

MySQL深入浅出: order by if()与order by in()之条件排序

目录 1:原表数据 2:order by if() 3:order by in() 4:社区地址 1:原表数据 2:order by if() SELECT * FROM people ORDER BY IF(…

mysql数据库的表的增删查改

目录 表的增删查改 6.1:增加 6.2:查找 6.3:更新 6.4:删除 6.5: 插入查询结果 6.6:聚合函数 6.7:group by分组 关键字的先后顺序:from > on> join > where > gro…

C语言实现三子棋小游戏

目录 游戏介绍 游戏菜单的创建(menu) 游戏核心功能实现 棋盘的初始化(InitBoard) 棋盘的展现(printfboard) 玩家下棋(playerBoard) 电脑下棋(computerBoard&#…

探究C++构造函数及其优化

目录 一、 类的六个默认成员函数1.1 框架图1.2 具体介绍(1)构造函数(2)析构函数(3)拷贝构造函数(4)赋值运算符重载函数 归纳我们不写,编译器默认生成了什么: …

2023宁波市赛 天一永安杯赛前模拟题部分wp

Web pop 进hint.php 伪协议读index.php <?php class Tiger{public $string;protected $var;// 恶意参数public function __construct($var){$this->var $var;}public function __toString(){return $this->string;}public function boss($value){// 0eval($valu…

自动化测试作为软件测试的一种技术手段,时常被大家讨论

自动化测试作为软件测试的一种技术手段&#xff0c;时常被大家讨论。本人在自动化技术方面有过略有小成&#xff0c;今天聊一聊关于自动化的一些误区&#xff0c;以帮助新手能正确的了解和认识自动化一些概念。 测试的行为本质是什么&#xff1f; 为什么先从这个概念开始谈起&…

OpenGL之创建窗口

目录 什么是OpenGL&#xff1f; 核心模式与立即渲染模式 立即渲染模式 (Immediate mode) 核心模式(Core-profile) 状态机 对象 创建窗口 配置环境 什么是OpenGL&#xff1f; 一般它被认为是一个API(Application Programming Interface, 应用程序编程接口)&#xff0c;…

黑客最常用的10款黑客工具

以下所有这些工具都是捆绑在一起的Linux发行版&#xff0c;如Kali Linux或BackBox&#xff0c;所以我们一定会建议您安装一个合适的Linux黑客系统&#xff0c;使您的生活更轻松 - 尤其是因为这些黑客工具可以&#xff08;自动&#xff09;更新。 1、Nikto&#xff08;网站漏洞…

中断与freeRTOS任务进行同步

S32K144在做CAN通信时&#xff0c;通过FlexCAN中断接收CAN数据&#xff0c;并希望让freeRTOS 的CAN处理任务拿到CAN数据并进行数据处理。因此就需要找到能够满足中断与freeRTOS任务进行同步的方式方法。 遇到这个问题&#xff0c;第一时间想到的就是查找freeRTOS手册《FreeRTO…

Spring 拦截器

目录 今日良言&#xff1a;心若有所向往&#xff0c;何惧道阻且长 一、Spring 拦截器 1.拦截器简介 2.实现自定义拦截器 今日良言&#xff1a;心若有所向往&#xff0c;何惧道阻且长 一、Spring 拦截器 1.拦截器简介 Spring Boot 拦截器是面向切面编程-----AOP 的具体实现…

人工智能基础部分17-隐马尔科夫模型在序列问题的应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能基础部分16-隐马尔科夫模型在序列问题的应用&#xff0c;隐马尔可夫模型(HMM)是一种统计模型&#xff0c;广泛应用于各种领域&#xff0c;如语音识别、自然语言处理、生物信息学等。本文将介绍隐马尔可夫模…

杂记——25.eclipse如何连接并实现对数据库的操作

这篇文章我们来讲一下eclipse&#xff08;即编辑器&#xff09;如何连接并实现对数据库的操作&#xff0c;这里以eclipse为主连讲解演示一下。 第一步&#xff1a; 查看我们本机安装的数据库的版本&#xff0c;即查看我们本机是否安装了数据库 在命令提示窗口输入&#xff1…

games103——作业3

实验三主要使用FEM和hyperelastic模型完成弹性体的模拟 完整项目已上传至github。 文章目录 Linear finite element method(FEM)二维空间有限元方法变形梯度(Deformation Gradient)格林应变(Green Strain)应变能量密度函数(Strain Energy Density Function)力(Force) Finite Vo…

威胁猎人 | 2018年上半年国内公有云云上资产合规现状报告

声明&#xff1a;本报告版权属于威胁猎人情报中心&#xff0c;并受法律保护。转载、摘编或利用其它方式使用本报告文字或者观点的&#xff0c;应注明“来源&#xff1a;威胁猎人”。违反上述声明者&#xff0c;将追究其相关法律责任。 一、报告背景 自2005年亚马逊发布AWS伊始…

基于nodejs+vue3 的高仿网易云音乐

大家好&#xff0c;我是小寻&#xff0c;欢迎大家关注我的公众号&#xff1a;工具优选&#xff0c;加入前端、java群聊哦&#xff01; 今天给大家分享一个超高水准的项目&#xff1a;基于nodejsvue3研发的高仿网易云音乐&#xff0c;项目内容出自寻码网&#xff01; 技术栈&a…

行业唯一丨冠珠瓷砖荣获人民日报社“ESG年度案例”

践行社会责任&#xff0c;推动品牌高质量发展。5月11日&#xff0c;由人民日报社指导、人民日报社经济社会部主办的“中国企业社会责任高峰论坛”在上海盛大举行。 本次论坛围绕乡村振兴、共同富裕、绿色低碳等重点议题进行深入研讨&#xff0c;邀请国家发展和改革委员会、商务…

Thread线程学习(2) Linux线程的创建、终止和回收

目录 1.首先要了解什么是线程ID&#xff0c;以及它的作用是什么 2.创建线程 3.终止线程 4.回收线程 5.总结 在Linux系统中&#xff0c;线程是轻量级的执行单元&#xff0c;能够在同一个进程中并发执行。本文将介绍如何在Linux环境下创建、终止和回收线程&#xff0c;并提供…

〖Web全栈开发③〗—HTTP协议和静态web服务器

HTTP协议和静态web服务器 &#xff08;一&#xff09;三次握手和四次挥手&#xff08;二&#xff09;HTTP协议2.1 HTTP协议的定义2.2 HTTP协议的组成 &#xff08;三&#xff09;搭建python自带静态web服务器3.1 静态web服务器是什么3.2 如何搭建python自带的静态web服务器3.3 …

【栈和队列】的特性以及基本接口的实现

目录 一、栈 1.1 栈的概念 1.2 栈的接口实现 二、队列 2.1 队列的概念 2.2 队列的接口实现 2.3 栈和队列的区别 三、栈和队列LeetCode练习 3.1 力扣_232.用栈实现队列 3.2 力扣_225.用队列实现栈 3.3 力扣_622.设计循环队列 3.4 力扣_20.有效的括号 一、栈 第一次学…