C语言:整形存储

cs 复制代码
#include<stdio.h>
int main() {
	char a = -1;
	signed char b = -1;
	unsigned char c = -1;
	printf("a=%d,b=%d,c=%d", a, b, c);
	return 0;
}

b与a都是有符号数结果一样。a的signed相当于省略了。

运行结果

整形提升:整形算术运算总是以至少以缺省整型类型的精度来进行的,为了获取这种精度,表达式中的字符和短整型操作数在使用之前转换为普通整型,这种转换称为整型提升。

整形提升时有符号数高位补符号数,无符号数补高位0。

截断:-1是int型占4个字节,char占一个字节(-128~127)(8bit),将-1赋值给char会发生截断现象。将32位(4个字节)截断成8位(1个字节)。

cs 复制代码
#include<stdio.h>
int main() {
	char a = -128;
	printf("a=%u", a);
	return 0;
}

运行结果

注意:是打印无符号数,而不是a是无符号数,整形提升时按照有符号数进行提升。无符号数没有原码,补码,反码的概念,直接将内存中的补码按照无符号数转换成十进制。

cs 复制代码
#include<stdio.h>
int main() {
	int i = -20;
	unsigned int j = 10;
	printf("%d\n", i+j);
	return 0;
}

运行结果

注意:%d是有符号数。

相关推荐
niucloud-admin3 分钟前
NIUCLOUD LITE AI开发文档--命名规范
开发语言·php
WL学习笔记4 分钟前
模板初阶(C++)
开发语言·c++·后端·模板初阶
水饺编程5 分钟前
第2章:Linux 基础,mkdir 命令的简单入门
linux·c语言·汇编
SunnyDays10116 分钟前
使用 Java 高效管理 Excel 批注:添加、读取、修改和删除
java·开发语言·excel
ydjs678899-bot29 分钟前
为什么大型monorepos变慢了Rush.js + Sparo对此做了什么
开发语言·javascript·ecmascript
坊钰36 分钟前
【LangGraph框架入门级】12. 人机交互:interrupt 中断与 Command 恢复
开发语言·数据库·python·人机交互·ai编程·langgraph
燕落南枝37 分钟前
C 语言学习大总结:从入门到进阶的完整知识体系
服务器·c语言·学习
开开心心就好39 分钟前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
不会C语言的男孩41 分钟前
libxml2 源码编译与 XML 读取验证(x86 / ARM)
xml·c语言·嵌入式
David猪大卫1 小时前
【C++修炼】STL容器—模板进阶:非类型模板参数、模板特化、模板分离编译
c语言·开发语言·c++·经验分享·笔记·学习·面试