整形提升及例题

简介: 整形提升及例题

什么是整形提升 在表达式计算时,各种整形首先要提升为int类型,如果int类型不足以表示则要提升为unsigned int类型?

什么是表达式

整形有哪些

例题:

#include <stdio.h>
int main()
{
char a= -1;//有符号char类型的a
signed char b=-1;//有符号char类型的b
unsigned char c=-1;//无符号char类型的c
printf ("a=%d , b=%d , c=%d" ,a,b,c);//以有符号整数的形式输出a,b,c
return 0;
}

分析

-1是一个整数

原码是10000000000000000000000000000001;

反码是 11111111111111111111111111111110;

补码是 11111111111111111111111111111111;

因为char类型向内存申请空间时只得到八个比特位大小的空间

因而存储进char a的是11111111

在输出时,因为a=%d是赋值表达式,a又是char类型,因此要进行整形提升。

那么如何进行整形提升呢?这就涉及到整形提升的规则了

C语言规定,有符号数进行整形提升时,高位补符号位的数字

无符号进行整形提升时,高位补0

因此此时a中存储的是11111111111111111111111111111111

要输出还需把补码转换成原码(注:C语言中存储的是补码,显示的是原码)

对补码取反+1(或者-1取反)即可得到原码10000000000000000000000000000001

因而输出的a是-1,b与a同理

接下来分析unsigned char c。

char c中存储的是11111111,进行整形提升后是00000000000000000000000011111111

由于c是无符号数,因而它的原码补码反码相同(正数也是如此)

以有符号整数形式输出的结果是255

因而最终输出的结果是a=-1,b=-1,c=255

有符号数与无符号数相加时,有符号数的符号位要参与计算

int i= -20;
unsigned  int  j = 10;
printf("%d\n", i+j);

10000000000000000000000000010100原码

11111111111111111111111111101011反码

11111111111111111111111111101100补码

00000000000000000000000000001010原码/反码/补码

11111111111111111111111111110110

10000000000000000000000000001001

10000000000000000000000000001010

相关文章
9、阿里巴巴矢量图库icon-font的运用
前言:今天说下在项目中的使用图标库 GitHub:https://github.com/Ewall1106/mall 一、新建图标项目 1、打开阿里巴巴矢量图库这个网站,进入图标管理中,在里面新建一个项目 iconfont官网 2、然后...
10642 106
GDPR的发展历程
【10月更文挑战第7天】GDPR的发展历程
720 7
|
JSON 网络协议 网络安全
详解新一代 HTTP 请求库:httpx
详解新一代 HTTP 请求库:httpx
1525 2
|
9月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
890 0
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
|
开发者 Windows Android开发
跨平台开发新选择:揭秘Uno Platform与.NET MAUI优劣对比,帮你找到最适合的框架,告别选择困难症!
【8月更文挑战第31天】本文对比了备受关注的跨平台开发框架Uno Platform与.NET MAUI的特点、优势及适用场景。Uno Platform基于WebAssembly和WebGL技术,支持Windows、iOS、Android及Web平台,而.NET MAUI由微软推出,旨在统一多种UI框架,支持Windows、iOS和Android。两者均采用C#和XAML进行开发,但在性能、平台支持及社区生态方面存在差异。Uno Platform在Web应用方面表现出色,但性能略逊于原生应用;.NET MAUI则接近原生性能,但不支持Web平台。开发者应根据具体需求选择合适的框架。
609 0
|
搜索推荐 算法 Linux
这款文本转语音(TTS)
【8月更文挑战第6天】Fish Speech是一款先进的开源文本转语音(TTS)工具,它能迅速将文字转换为流畅自然的语音,尤其适合镜头前感到紧张的人制作视频内容。Fish Speech支持中文、英文及日文等多种语言,可通过简单的原始语音样本快速克隆个性化声音。其架构设计高效,仅需4GB显存即可运行,采用Flash-Attn算法实现高性能语音合成。Fish Speech具备易用性,提供Web界面操作,并可在Linux与Windows系统上部署。用户可通过官网([https://fish.audio/zh-CN/](https://fish.audio/zh-CN/))直接体验其强大功能。
1251 0
|
前端开发 JavaScript Java
Spring Boot应用中的资源分离与高效打包实践
通过实施资源分离和高效打包策略,不仅可以提升Spring Boot应用的开发和部署效率,还能显著提高用户体验。在实际项目中,根据项目的实际情况和团队的技术栈选择合适的工具和方案是关键。希望本文能为读者在Spring Boot项目中实现资源分离和高效打包提供一些有价值的参考。
368 0
|
缓存 前端开发 JavaScript
Spring Boot中如何处理静态资源
Spring Boot中如何处理静态资源
|
算法 安全 数据挖掘
解锁编程之门:数论在算法与加密中的实用应用
解锁编程之门:数论在算法与加密中的实用应用
|
机器学习/深度学习 数据挖掘 PyTorch
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
12721 1
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )