C语言(长期更新)第10讲:操作符详解(二)

发布于:2025-08-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

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 优先级

假如说一个表达中存在多个操作符,如何按顺序执行呢?这就涉及到操作符的优先级了。

下面我给出常见操作符优先级,其他有需要可按表格自行查找

  1. 圆括号()
  2. 自增自减运算符++ --
  3. 正负(一元运算符) + -
  4. 整除 * /
  5. 加减 + -
  6. 关系运算符 < >
  7. 赋值运算符 =

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博客


网站公告

今日签到

点亮在社区的每一天
去签到