关于C语言整型提升的讲解

目录

1.什么是整型提升

2.整型提升的意义

3.整型提升是怎么提升的

4.整型提升的实例


 

1.什么是整型提升

C语言中的整型算术运算总是以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中的字符短整型操作数在使用之前会被转换为普通整型。那么将这种转换称为整型提升。

理解:整型提升的对象是两种:①表达式中的字符类型和短整型

②整个过程是操作系统偷偷做的,不会表现出来,先将数据进行整形提升过后再参与运算。

2.整型提升的意义

①表达式的整型运算要在CPU的相应运算器件内执行1,cpu内整型运算器的操作数的字节长度一般就是int的字节长度为4个字节,同时也是cpu的通用寄存器的长度。因此,即是两个char类型的相加,在cpu执行时实际上也要先转换为cpu内整型操作数的标准长度。

通用cpu是难以直接实现两个8比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。

比如:一个char是1个字节,为八个比特位,当两个char相加的时候就有可能发生进位,那么就有可以得到一个9比特位的数据,那么存储空间只有8个比特位就可能发生截断,数据就是错误的。

所以,表达式中各种长度小于int长度的整型值,都必须转换为int,再送入cpu进行运算。 

3.整型提升是怎么提升的

总的规则:整型提升是根据变量的数据类型的符号位来进行提升的

对于负数来说:

char c1 = -1;

c1在内存中存储的二进制序列(补码)为:

11111111

整型提升的时候,高位补充符号位,即补充1

整型提升后的结果为:11111111 11111111 11111111 11111111

对于正数来说:

char c2 = 1;

c2在内存中存储的二进制序列(补码)为:

00000001

整型提升的时候,高位补充符号位,即是补充0:

00000000 00000000 00000000 00000001

对于无符号的整型来说高位直接补0 

4.整型提升的实例

大家也可以看一下上一篇题解,也是运用整型提升的实例

整型提示题解实例 

这篇文章可以作为整型在内存中的存储相关篇章的辅助知识,也是在学习C语言路上的一个热门基础知识,大家可以结合例子好好理解一下,不对的地地方欢迎大家指正。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3d渲染软件有哪些?3d云渲染推荐

目前市面上的3D渲染软件非常多,不同的建模软件都有自己的渲染方式,根据所处行业的不同和项目需要,设计师可以选择不同的软件帮助展示最终效果。 主流的渲染软件有:VRay和Corona:一般用于室内效果图渲染,与3…

Git学习笔记(第5章):Git团队协作机制

目录 5.1 团队内协作 5.2 跨团队协作 Git进行版本控制都是在本地库操作的。若想使用Git进行团队协作,就必须借助代码托管中心。 5.1 团队内协作 问题引入:成员1(大佬)利用Git在宿主机上初始化本地库,完成代码的整体…

MFC 序列化机制

目录 文件操作相关类 序列化机制相关类 序列化机制使用 序列化机制执行过程 序列化类对象 文件操作相关类 CFile:文件操作类,封装了关于文件读写等操作,常见的方法: CFile::Open:打开或者创建文件CFile::Write/…

经典目标检测YOLO系列(二)YOLOV2的复现(1)总体网络架构及前向推理过程

经典目标检测YOLO系列(二)YOLOV2的复现(1)总体网络架构及前向推理过程 和之前实现的YOLOv1一样,根据《YOLO目标检测》(ISBN:9787115627094)一书,在不脱离YOLOv2的大部分核心理念的前提下,重构一款较新的YOLOv2检测器,来对YOLOV2有…

k8s资源介绍

Kubernetes架构图 Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序,并且其提供了零停机时间部署、自动回滚、缩放和容器的自愈(其中包括自动配置、自动重启、自动复制的高弹性基础设施,以及容器的自动缩放等)等…

SDL2 连续帧图像显示

QT使用SDL多窗口显示视频(linux,ubuntu)_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT SDL调用OPENGL渲染图像 - C - 心得 C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门:掌握跨平台游戏开发和多媒体编程_sdl开…

【Python学习】Python学习21- 正则表达式(1)

目录 【Python学习】Python学习21- 正则表达式(1) 前言re.match函数实例 re.search方法re.match与re.search的区别参考 文章所属专区 Python学习 前言 本章节主要说明Python的正则表达式。 正则表达式是一个特殊的字符序列,它能帮助你方便的…

文心一言使用分享

ChatGPT 和文心一言哪个更好用? 一个直接可以用,一个还需要借助一些工具,还有可能账号会消失…… 没有可比性。 通用大模型用于特定功能的时候需要一些引导技巧。 import math import time def calculate_coordinate(c, d, e, f, g, h,…

Debian 10.13.0 安装图解

引导和开始安装 这里直接回车确认即可,选择图形化安装方式。 选择语言 这里要区分一下,当前选中的语言作为安装过程中安装器所使用的语言,这里我们选择中文简体。不过细心的同学可能发现,当你选择安装器语言之后,后续安…

WebDriverWait太强大

selenium webdriver及wait 1 implicitly包打天下2 Linkedin无法登录返回值很乱,怎么破? 1 implicitly包打天下 有了implicitly之后,基本上不再关注网速之类的影响。 self.driver.implicitly_wait(511)2 Linkedin无法登录返回值很乱&#xf…

【C语言编程之旅 6】刷题篇-for循环

第1题 解析 思路&#xff1a; 两个循环进行控制 外层循环控制打印多少行 内部循环控制每行打印多少个表达式以及表达式内容&#xff0c; 比较简单&#xff0c;具体参考代码 #include <stdio.h> int main() {int i 0;//控制行数for(i1; i<9; i){//打印每一行内容&am…

《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(20)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置&#xff08;19&#xff09; 2.4 PCI总线的配置 PCI总线定义了两类配置请求&#xff0c;一个是Type 00h配置请求&#xff0c;另一个是Type 01h配置请求。PCI总线使用这些配置请求…

k8s 使用cert-manager证书管理自签

个人建议使用安装更快&#xff0c;比helm快&#xff0c;还要等待安装crd kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml#官网 https://cert-manager.io/docs/installation/kubectl/#创建自签的ClusterIssuer c…

Linux设备管理模型-02:sysfs

文章目录 sysfs1 使用sysfs控制GPIO2 sysfs编程2.1 完善sysfs属性文件的读写操作 上一篇文: 设备管理模型中的基础数据结构 sysfs sysfs是用于导出内核对象的文件系统&#xff0c;它是一个基于ram的文件系统&#xff0c;最初基于ramfs。 sysfs通常挂载在/sys目录下。它提供了一…

【 Qt 快速上手】-②- Qt 环境搭建

文章目录 1. Qt 开发工具概述1.1 Qt Creator 介绍1.2 Visual Studio 介绍1.3 Eclipse 介绍 2. Qt SDK 的下载与安装2.1 Qt SDK 的下载2.2 Qt SDK 的安装2.3 验证 Qt SDK 安装是否成功2.4 Qt 环境变量配置 1. Qt 开发工具概述 Qt 开发环境需要安装三个部分&#xff1a; C编译器…

分布式系统——树状算法

1 树状算法的基本理论 树算法常用于在分布式系统中实现广播操作&#xff0c;这里您提供了一些基本定义和一个引理关于广播操作的消息复杂度和时间复杂度的下界。 1.1 广播定义 广播操作是由单个处理器&#xff08;源节点&#xff09;发起的&#xff0c;其目的是向系统中的所有…

systemverilog/verilog文件操作

1、Verilog文件操作 Verilog具有系统任务和功能,可以打开文件、将值输出到文件、从文件中读取值并加载到其他变量和关闭文件。 1.1 、Verilog文件操作 1.1.1、打开和关闭文件 module tb; // 声明一个变量存储 file handler integer fd; initial begin // 以写权限打开一个文…

互联网加竞赛 基于机器视觉的手势检测和识别算法

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng…

【react】创建react项目+项目结构

使用create-react-app快速搭建开发环境 create-react-app是一个快速创建React开发环境的工具&#xff0c;底层由Webpack构建&#xff0c;封装了配置细节 npx create-react-app react_hm执行命令后开始创建 创建好执行cd react_hm npm start 当看到webpack compiled successfu…

VMware workstation安装FreeBSD14.0虚拟机并配置网络

VMware workstation安装FreeBSD14.0虚拟机并配置网络 FreeBSD是类UNIX操作系统&#xff0c;FreeBSD带有多个软件包&#xff0c;并覆盖了广阔的应用领域&#xff0c;且都是免费和易于安装的。该文档适用于在VMware workstation平台安装FreeBSD14.0虚拟机。 1.安装准备 1.1安装…