整形提升及例题

简介: 整形提升及例题

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

相关文章
|
Java
Java Poi-tl操作Word文档,插入文本和图片
poi-tl(poi template language)是Word模板引擎,基于Microsoft Word模板和数据生成新的文档
1817 0
|
12月前
|
JSON 网络协议 网络安全
详解新一代 HTTP 请求库:httpx
详解新一代 HTTP 请求库:httpx
1298 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平台。开发者应根据具体需求选择合适的框架。
516 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/))直接体验其强大功能。
1132 0
|
自然语言处理 程序员 Windows
[UE虚幻引擎] DTSpeechVoice 文字转语音播放 插件说明
这个插件用于在虚幻引擎(UE)中通过蓝图将文本转化为语音播放,利用Windows内置的语音引擎,支持Win10和Win11。确保电脑已安装语音系统,可能需要额外下载语言包以支持多语言播放。蓝图操作包括添加Speech Voice Component到Actor,使用Speak节点播放文本,Set Volume调整音量,Set Rate改变播放速度,Pause和Resume控制播放状态,Stop则停止播放且无法恢复。此外,Get Tokens和Set Token用于管理语音类型。更多详情可访问[80后程序员](https://dt.cq.cn/archives/1008?from=aliyun)
390 5
|
前端开发 JavaScript Java
Spring Boot应用中的资源分离与高效打包实践
通过实施资源分离和高效打包策略,不仅可以提升Spring Boot应用的开发和部署效率,还能显著提高用户体验。在实际项目中,根据项目的实际情况和团队的技术栈选择合适的工具和方案是关键。希望本文能为读者在Spring Boot项目中实现资源分离和高效打包提供一些有价值的参考。
267 0
|
安全 搜索推荐 Android开发
安卓与iOS的设计理念差异及其对用户体验的影响
【8月更文挑战第12天】在移动操作系统领域,安卓和iOS两大阵营分别以其独特的设计理念吸引着不同的用户群体。本文将深入探讨这两大系统在设计哲学、用户界面、交互模式以及生态系统构建方面的差异,并分析这些差异如何影响最终用户的体验。通过对比分析,我们可以更清晰地认识到各自设计理念的优势和局限,以及它们是如何塑造用户日常互动和感知的。
|
算法 安全 数据挖掘
解锁编程之门:数论在算法与加密中的实用应用
解锁编程之门:数论在算法与加密中的实用应用
|
机器学习/深度学习 数据挖掘 PyTorch
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
11985 1
图像分类经典神经网络大总结(AlexNet、VGG 、GoogLeNet 、ResNet、 DenseNet、SENet、ResNeXt )
|
运维 数据可视化 安全
VR虚拟现实的七大应用领域
VR虚拟现实的七大应用领域
VR虚拟现实的七大应用领域