整形提升及例题

简介: 整形提升及例题

什么是整形提升 在表达式计算时,各种整形首先要提升为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

相关文章
|
人工智能 物联网 机器人
『GitHub项目圈选17』推荐5款本周 火火火 的AI开源项目
『GitHub项目圈选17』推荐5款本周 火火火 的AI开源项目
2096 1
|
10月前
|
存储 人工智能 Serverless
一键解锁 AI 动画视频创作,赢好礼
短视频行业的快速增长使得内容创作的速度和质量成为竞争关键。传统动画故事制作复杂且昂贵,限制了创作者对市场热点的快速反应和创新实现。本方案通过 AI 生成剧本和动画,简化创作流程并降低技术门槛,使创作者能高效生产高质量作品,迅速适应市场需求。
319 11
|
6月前
|
数据采集 弹性计算 供应链
阿里云服务器包年包月、按量付费和抢占式实例有什么区别?如何选择?
阿里云服务器ECS提供三种付费类型:包年包月、按量付费和抢占式实例。包年包月适合长期稳定使用,价格优惠;按量付费灵活方便,按小时结算,适用于短期或突发需求;抢占式实例价格最低(可省90%),但可能被系统释放,适合无状态应用如大数据分析、科学计算等。选择时根据业务场景决定:稳定需求选包年包月,动态需求选按量付费,低成本无状态应用选抢占式实例。
308 42
|
10月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
975 0
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
|
存储 API C语言
C/C++爱心代码
C/C++爱心代码
3693 2
|
JSON 网络协议 网络安全
详解新一代 HTTP 请求库:httpx
详解新一代 HTTP 请求库:httpx
1688 2
|
开发者 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平台。开发者应根据具体需求选择合适的框架。
647 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/))直接体验其强大功能。
1335 0
|
算法 安全 数据挖掘
解锁编程之门:数论在算法与加密中的实用应用
解锁编程之门:数论在算法与加密中的实用应用
|
机器学习/深度学习 数据挖掘 PyTorch
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
13051 1
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )