C语言小tip之整型提升

news2024/11/28 14:10:29

今天让我们来学习一下C语言中的一个小知识点-----整型提升

什么叫整型提升呢?

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

整型提升的意义 

 表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。​
因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPU(general-purpose CPU)是难以直接实现两个8比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。所以,表达式中各种长度可能小于int长度的整型值,都必须先转换为int或unsigned int,然后才能送入CPU去执行运算。

 让我们来看一段代码:

#include<stdio.h>
int main ()
{
    char a = 5;
    char b =125;
    char c = a + b;
    printf("%d",c);
}

在VS中鼠标点在5上会显示int类型,所以a先要转换成int类型32个byte位即00000000000000000000000000000101(原反补相同),因为a的类型是char只占1个字节--8个byte(要发生截断)位即00000101同理b为01111101 。

在进行a + b的运算时,要进行整型提升因为该类型为有符号的char在进行整型提升的时候要按照符号位进行提升a由原来的00000101要变为00000000000000000000000000000101,b由原来的

01111101要变为00000000000000000000000001111101在进行相加,结果为00000000000000000

0000000010000010发生截断为10000010在进行打印的时候%d打印由符号的整数,同时也要进行整型提升,这时要注意要以符号位1来进行提升11111111111111111111111110000010转换为原码(取反加一)后为10000000 00000000 00000000 01111110,翻译后为-126。

今天介绍就到这里啦,拜拜。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从大模型到通用AI《智能计算系统》带你揭秘大模型背后的智能计算革命

“只要你想把大模型做得更好、做得更大、做得更快、做得更省电&#xff0c;你就必须要有系统的人才跟思维。 . 我们这个领域变化得特别快,教的内容,教的方式,都要不断地变化。如果我们中国的研究者和教育者做得更好一点如果我们在具身智能的大模型上,或者是说在未来终极的通用人…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月21日新模型预测第63弹

经过62多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;62多期一共只错了6次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c…

【JVM】JVM解析字节码文件过程(二)

JVM解析字节码文件过程 字节码中的数据结构 field_info 在Java字节码中&#xff0c;field_info结构是用来描述类或接口中的字段(成员变量的)。每个field_info结构对应类文件中的一个字段。其中它的组成部分包括如下&#xff1a; 1.access_flags:访问标志,表示字段的访问级别(如…

哪款骨传导耳机好?2024不同价位骨传导耳机推荐!

对于我个人而言&#xff0c;蓝牙耳机早已成为了我形影不离的“私人音乐盒”&#xff0c;满足了我日常各式各样的需求&#xff0c;仿佛是身体的一部分&#xff0c;不可或缺。然而&#xff0c;我也曾面临一个不小的挑战——由于耳孔小巧且敏感&#xff0c;长时间佩戴传统的入耳式…

使用钉群发送告警通知

创建钉群&#xff0c;添加机器人 创建群 添加机器人并设置信息 需要注意的是设置“安全设置”时如果使用自定义关键词方式&#xff0c;那设置的内容必须要包含告警消息的内容 代码 模拟http请求发送通知 /*** param content 消息内容* param webhook 设置告警通知的群中机器…

基于vue框架的搬家网平台iz216(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,服务项目,订单信息,工人,商家,项目类型,指派信息,进度情况,服务评价 开题报告内容 基于Vue框架的搬家网平台开题报告 一、引言 随着城市化进程的加快和人们生活水平的提高&#xff0c;搬家服务需求日益增长。传统的搬家服务往往…

pygame开发课程系列(8):进阶开发

第八章 进阶学习 在本章中&#xff0c;我们将深入探讨一些高级的游戏开发技巧。这些技术可以使你的游戏更具吸引力和互动性&#xff0c;从动画效果到复杂的碰撞检测&#xff0c;再到多人网络功能。掌握这些技巧将帮助你提升游戏的质量&#xff0c;并为玩家带来更丰富的体验。 …

QWidget加border-color,一定要使用确定的名字。要不然整个qwidget内部的子控件都会添加边框

QWidget加border-color&#xff0c;一定要使用确定的名字。要不然整个qwidget内部的子控件都会添加边框

【学术会议征稿】第二届物联网与云计算技术国际学术会议 (IoTCCT 2024)

第二届物联网与云计算技术国际学术会议 (IoTCCT 2024) 2024 2nd International Conference on Internet of Things and Cloud Computing Technology (IoTCCT 2024) 第二届物联网与云计算技术国际学术会议(IoTCCT 2024)将于2024年9月27日至29日于广西桂林召开。本次会议将围绕…

zabbix常见架构及组件

Zabbix作为一个开源的、功能全面的监控解决方案&#xff0c;广泛应用于各类组织中&#xff0c;以实现对网络、服务器、云服务及应用程序性能的全方位监控。部署架构灵活性高&#xff0c;可支持从小型单一服务器环境到大型分布式系统的多种场景。基本架构通常包括监控端&#xf…

点灯案例优化(二) 利用位运算修改特定位

前面&#xff0c;我们对点灯代码进行了第一次优化&#xff0c;效果如下 尽管第一次优化以后代码可读性确实高了不少&#xff0c;也看起来更加简洁&#xff0c;但是&#xff0c;这里仍旧存在一个很严重的问题&#xff1a;就在每一个表达式右边&#xff0c;我们给寄存器的数据赋值…

[数据集][目标检测]绳子检测数据集VOC+YOLO格式322张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;322 标注数量(xml文件个数)&#xff1a;322 标注数量(txt文件个数)&#xff1a;322 标注类别…

虹科波形实验室 | 识别振动/敲击方向的方法

熟悉虹科Pico的朋友们都知道&#xff0c;我们的NVH诊断设备可以精确采集三个方向上的振动幅值&#xff0c;并通过软件的自动计算&#xff0c;定位振动来源。但最近收到用户的咨询&#xff0c;问我们NVH设备的振动传感器是否能识别振动的方向&#xff1f;比如Y轴的振动&#xff…

uipath发送邮件给多人:配置教程步骤解答!

uipath发送邮件给多人如何设置&#xff1f;使用uipath发信技巧&#xff1f; 自动化流程能够极大提高工作效率&#xff0c;其中邮件发送作为日常操作的重要组成部分&#xff0c;尤为关键。AokSend将详细介绍如何通过uipath发送邮件给多人&#xff0c;帮助您在自动化流程中更好地…

海康相机触发输入输出(含代码)

海康相机触发模式 软件设置&#xff1a;先设置触发模式&#xff0c;在设置触发源。 目的&#xff1a;模拟编码器发送信号触发相机采集&#xff0c;通过一个矩形波信号触发采集图像。 计数器触发 说明书MSV客户端步骤&#xff1a; 实验过程 1、编码器周长300mm&#xff0c;…

[Leetcode 61][Medium]-旋转链表

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题链接 二、整体思路 首先发现这样的规律&#xff1a;当k大于等于链表中节点总数n时&#xff0c;会发现此时旋转后的链表和kk%n时的旋转后的链表一样。同时对于特殊情况n0和n1时&#xff0c;无论k的值为多少都可以…

Unity--XLua调用C#

Unity–XLua调用C# 由于Unity/C# 和lua是两种语言&#xff0c;两种语言的特性不一样&#xff0c;因此&#xff0c;如果要互相调用的话&#xff0c;需要第三方作桥梁. 因此&#xff0c;为了在Unity中/C#中使用lua的特性&#xff0c;需要在Unity中安装插件&#xff0c;Xlua/toLu…

数据结构—— 再探二叉树

1. TOP-K问题 TOP-K问题&#xff1a;求数据结合中前K个最大或者最小的数据 比如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等 思路&#xff1a; 1. 用数据集合中前K个数据来建堆&#xff1a; …

easypoi模板导出word并且合并行

导出流程 引入依赖制作模板合并导出 引入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.1.2</version> </dependency>制作模板 合并行是备注那一列&#xff0c;这一列…

UCIE-state machion

1.retrain/linkerror/active状态 状态转变都是从下往上。 &#xff08;1&#xff09;Retrain&#xff1a;multistack和raw model相互违背&#xff1b; &#xff08;2&#xff09;Linkerror&#xff1a;如果一个stack需要进入linkerror&#xff0c;表示链路已经存在问题&…