当前位置: 首页 > news >正文

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

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

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

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

http://www.dtcms.com/a/324712.html

相关文章:

  • 麻溜启动Oracle实例demo
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • 基于Spring Boot和WebSocket的实时聊天系统
  • Openlayers基础教程|从前端框架到GIS开发系列课程(21)geojson实现线要素和区要素
  • git merge的原理和过程,merge conflict产生的原因、处理的逻辑
  • 【话题讨论】GPT-5 发布全解读:参数升级、长上下文与多领域能力提升
  • MCP学习与实践
  • ESP32安装于配置
  • [激光原理与应用-216]:设计 - 皮秒紫外激光器 - 热管理设计,多维策略保障高效稳定运行
  • 腾讯云EdgeOne Pages深度使用指南
  • 计算机网络:什么是AD域
  • 线程的sleep、wait、join、yield如何使用?
  • 随想记——excel报表
  • XGBoost参数evals的作用及使用方法
  • 【图像算法 - 11】基于深度学习 YOLO 与 ByteTrack 的目标检测与多目标跟踪系统(系统设计 + 算法实现 + 代码详解 + 扩展调优)
  • 什么是缓存击穿、缓存穿透、缓存雪崩及其解决方案
  • Oracle lgwr触发条件
  • Docker 容器化工具及常用操作
  • Excel版经纬度和百分度互转v1.1
  • crc32算法php版----crc32.php
  • 【Spring IoC 核心实现类详解:DefaultListableBeanFactory】
  • Leetcode 3646. Next Special Palindrome Number
  • 分发糖果(贪心算法)
  • Vue.js设计于实现 - 响应式(三)
  • Spring Boot 全局异常处理与日志监控实战
  • OneCode 3.0 可视化功能全面分析:从开发者到用户的全场景解析
  • 一周学会Matplotlib3 Python 数据可视化-绘制条形图(Bar)
  • 论文复现与分析内容关于一种实用的车对车(V2V)可见光通信(VLC)传播模型
  • Z20K118库中寄存器及其库函数封装-REGFILE库
  • Windows执行kubectl提示拒绝访问【Windows安装k8s】