发布时间:2023-02-07 08:00
在我们编程的过程中,经常会遇到不同类型的数据之间进行计算,那么如果我们想要预期结果和实际结果相同的话,我们自己首先得知道要怎么计算,这一篇,我来讲一讲表达式求值的那点事,欢迎大家先点赞后阅读啊
首先我们要先提出几个名词:
表达式求值的顺序一部分由操作符的结合性和优先级决定,但是,在有些表达式求值的过程中,数据需要转换成其他类型的数据
对于在内存中所占字节小于int的数据,例如char,short类型的数据,在进行加减时会进行隐性转换,转换成int类型的数据后再进行加减。
//例如以下代码
char a = 3;
//3是int型数据,存放在char中会发生截断
//00000000000000000000000000000011(补码)
//截断后 00000011
short b = 5;
//short同理
//00000000000000000000000000000101(补码)
//截断后 00000101
int c = a + b;
//a,b要进行加减,需要进行整型提升
//a-> 00000000000000000000000000000011
//b-> 00000000000000000000000000000101
//再进行计算
scanf("%d\n", c);
整型提升前面添加的是1还是0由符号位说了算,不了解二进制码的同学请移步(11条消息) C语言数据的类型以及在内存中的储存_Joker2373的博客-CSDN博客
对于在内存中所占字节大于int的数据,我们默认会进行数据的算术提升
因为两个数据类型不同是无法进行各种计算的,当然算术提升也是隐性的
ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)
做一个高德地图的 iOS / Android .NET MAUI 控件系列 - 创建控件
真正牛的计算机工程师,哪一刻你觉得读书真的有用?网友:工程师年薪50万,读书人,牛!...
【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组 | 精品题解
第九章-----Java集合框架----ArrayList LinkedList HashSet TreeSet Map
入学计算机水平考试,2017级本科新生计算机水平入学考试要点
在VSCode中配置代码自动 eslint 格式化(修改eslint规则、eslint忽略文件)