C语言(长期更新)第10讲:操作符详解(二)
C语言(长期更新)
第10讲:操作符详解(二)
跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。博主主页:潼心1412o-CSDN博客
知识回顾
上节课我们学习了操作符的部分内容,对部分操作符有了扎实的掌握,今天我们来继续学习未完成的内容,坐稳了,我们发车,gogogo,出发喽!
目录
C语言(长期更新)
第10讲:操作符详解(二)
知识回顾
9.11 结构体
9.12 操作符的两大属性
9.12.1 优先级
9.12.2 结合性
9.13 表达式求值
9.13.1 整型提升
9.13.2 算术转换
9.14 潜在风险
9.11 结构体
在描述比较复杂的事物时,单一的内置类型就会显得单薄而无力
C语言提供了一种自定义类型——结构体
struct tag
{
member-list
}variable-list;
- struct是必写的关键字,表示为自定义类型结构体
- tag 是自定义类型名
- member-list 是指成员列表
- variable-list 是指变量列表,可省略
- ; 位于末尾,必不可少
下面我们看一个🌰
当然,结构体内部也可以嵌套结构体
结构体成员访问又分为两种
一种是直接访问,就是用结构成员访问操作符.直接进行访问
第二种是间接访问,会借助到我们下节课指针的内容
这里我们先简单了解一下结构体的基本知识,后续会有详细的知识讲解
9.12 操作符的两大属性
9.12.1 优先级
假如说一个表达中存在多个操作符,如何按顺序执行呢?这就涉及到操作符的优先级了。
下面我给出常见操作符优先级,其他有需要可按表格自行查找
- 圆括号()
- 自增自减运算符++ --
- 正负(一元运算符) + -
- 整除 * /
- 加减 + -
- 关系运算符 < >
- 赋值运算符 =
9.12.2 结合性
当两个操作符优先级相同时,就只能使用结合性进行判断了
附表
9.13 表达式求值
9.13.1 整型提升
C语言中整型算术运算总是至少以缺省类型(默认int)整型类型的精度进行的
为达此精度,表达式中的字符型(char)和短整型(short)都要先转换为普通整型(int)
这种转换就称作整型提升。
整型提升的意义
表达式的整型提升要在CPU的相应运算器件内进行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU通用寄存器的长度
因此,即使是两个char类型整数的相加,也必须先转换为CPU内整型操作数的标准长度。
通用CPU(general-purpose CPU)难以直接实现两个8比特直接相加运算(虽然机器指令中可能存在这样的指令)。所以,表达式中各种长度可能小于int长度的整型值都会被转化为int类型,再在CPU中进行运算。
如何进行整体提升呢?
有符号整型提升——按照变量数据类型的符号位提升,1补1,0补0无符号整型提升——高位补0
下面举个🌰
这段代码要如何计算呢?
首先我们需要把它换成二进制
120不会转换二进制?那就计算器吧
9.13.2 算术转换
若某个操作符的各操作符属于不同类型,除非一个操作数类型转换为另一个操作数的类型,否则操作将无法进行。寻常算术转换层次体系如下:
1. long double
2. double
3. float
4.unsigned long int
5. long int
6. unsigned int
7.int
排名靠后的操作数类型会转化为靠前的类型
9.14 潜在风险
即使我们拥有操作数的两大属性优先级和结合性,计算机路径仍不唯一,存在着潜在的风险。
建议不要写太复杂的表达式。
好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~
博主主页:潼心1412o-CSDN博客