首页 > 其他分享 >整形提升

整形提升

时间:2024-08-23 22:24:32浏览次数:8  
标签:char 0000 int 1111 提升 120 类型 整形

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

整型提升 (Integral Promotion)是指在计算机编程中,当不同类型的整数类型进行运算时,较小类型的整数会被自动转换为更大类型的整数,以确保运算的正确进行。这种类型转换主要涉及 char 、 short 等小型整数类型和 int 类型。

整型提升的意义在于,CPU的运算器通常设计为以int类型的宽度进行数据操作,因此,为了确保运算的精度和效率,表达式中的char和short类型的操作数必须先转换为int类型,然后才能送入CPU进行处理。

整型提升的规则如下:

对于有符号的char和short类型,提升时在左端补得是最高位(符号位),正数补0,负数补1。
对于unsigned char和unsigned short类型,提升时在左端补0,结果总是正数。

整型提升是编程中的一个重要概念,它帮助确保各种整数类型之间的运算能够正确地进行,同时也提高了程序的兼容性和可移植性。

前言:
char 是一个字节8比特,
作为无符号范围是0到255
作为有符号的范围-128到127
所有编译器int 都默认是signed int 
但是char类型不同编译器是不同的,不过vs是signed char

根据以上内容

        我们直接来试一道题

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
	char a = 130;
	char b = 120;
	printf("%d\n %d\n", b ,a+b);
	return 0;
}

这个题目的结果不120和250

因为 char 作为有符号的范围-128到127

vs是signed char(博主用的是vs)

那我们这个时候可以用整形提升来算这道题了

char是八位的,int是32
(这个数据使用时会被转换成int类型)
130 原码补码反码 1111 1111 1111 1111 1111 1111 1000 0010
120 原码补码反码 0000 0000 0000 0000 0000 0000 0111 1000
相加得           1111 1111 1111 1111 1111 1111 1111 1010
截断成char类型1111 1010(但是由于这个变量是char类型因此数据在存储时要被截断)
又因为打印是int类型(这个数据使用时会被转换成int类型)
故为这个是补码 1111 1111 1111 1111 1111 1111 1111 1010
        原码为 1000 0000 0000 0000 0000 0000 0000 0110
        也就是-6;

因此打印结果就是120和-6

标签:char,0000,int,1111,提升,120,类型,整形
From: https://blog.csdn.net/Starry_tsx/article/details/141475470

相关文章

  • 【C语言】分析整型提升|截断
    这里通过例子来帮助理解整型提升和截断的规则。问题:赋值过程是怎样的?什么情况会发生截断?整型提升的规则是什么?根据什么类型来提升?%d,%u对整型提升后的结果有什么影响?例一#include<stdio.h>intmain(){ chara=-128; printf("%d\n",a); printf("%u\n",a); r......
  • 指针以及指针变量(一)(整形、字符)
    今天简单介绍一些关于指针的知识,达到对指针的初步了解。因为数组跟函数的指针稍微有些杂乱,今天写介绍关于整形与字符的。函数与数组的会在整理好后一一价绍。地址地址也就是我们常说的指针,在讲解指针前先讲个生活中的小例子吧。学生小明是个住校生,他的朋友来他的学校找......
  • 问题回答:程序员如何平衡日常编码工作与提升式学习?
    程序员如何平衡日常编码工作与提升式学习?在快速迭代的编程世界中,程序员们不仅需要高效完成日常编码任务,还需不断学习新技术、深化专业知识,以应对日益复杂的项目挑战。然而,如何在繁忙琐碎的编码工作与个人成长之间找到平衡,是不少程序员都面临的一个难题。是沉浸在日复一日的工......
  • YOLOv5改进 | 融合改进 | C3 融合Efficient Multi-Scale Conv提升检测效果
      秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • 一文彻底了解ES6中的var、let、const基本用法以及暂时性死区和变量提升的区别
             ECMAScript变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的命名占位符。有三个关键字可以声明变量:var、let、const。其中var在ECMAScript的所有版本中都可以使用,而 const和let只能在ECMAScript6及更......
  • 笔灵AI写作工具,一键生成文章,让你的写作速度翻倍提升
    最近AI写作火的一塌糊涂,不仅各路自媒体大神都在用,而且连Science都官宣了允许AI写作,真真是古希腊掌管写作的神。AI时代,不是被工具取代,而是被“会用AI的人”取代。想要尝试用AI写作,又不知道如何找到靠谱工具的朋友可以看这个丝滑的AI写作工具,无需魔法,打开就能直接用,用完保你工......
  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对......
  • 【HW系列+技战法】全面掌控API接口,提升防御效果!
    原创紫队安全研究在现代互联网应用中,API接口已经成为了各种应用程序之间互通的桥梁。然而,随着API的广泛使用,API接口的安全性正逐渐成为网络安全的焦点。如果API接口被攻击者成功入侵,后果可能是灾难性的:数据泄露、服务中断、甚至整个系统瘫痪。为此,如何有效防御API接口的潜在......
  • 程序员如何平衡日常编码工作与提升式学习?
    在快速迭代的编程世界中,程序员们不仅需要高效完成日常编码任务,还需不断学习新技术、深化专业知识,以应对日益复杂的项目挑战。然而,如何在繁忙琐碎的编码工作与个人成长之间找到平衡,是不少程序员都面临的一个难题。是沉浸在日复一日的工作代码海洋中,还是抽出时间深入探索、自主学......
  • RAG 使用Rerank和两阶段检索来提升你的检索质量
    检索增强生成(RAG)是一个含义丰富的术语。它向世界许诺,但在开发出RAG管道后,我们中的许多人仍然在疑惑,为什么它的效果不如我们预期的那样好。与大多数工具一样,RAG易于使用但难以掌握。事实是,RAG不仅仅是将文档放入矢量数据库并在上面添加LLM。这可以奏效,但并不总是......