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是有符号数。

相关推荐
梵刹古音21 分钟前
【C语言】 函数基础与定义
c语言·开发语言·算法
梵刹古音40 分钟前
【C语言】 结构化编程与选择结构
c语言·开发语言·嵌入式
Yvonne爱编码43 分钟前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
一方_self43 分钟前
了解和使用python的click命令行cli工具
开发语言·python
南宫码农1 小时前
我的电视 - Android原生电视直播软件 完整使用教程
android·开发语言·windows·电视盒子
CoderCodingNo1 小时前
【GESP】C++四级/五级练习题 luogu-P1223 排队接水
开发语言·c++·算法
爱编码的小八嘎1 小时前
C语言对话-22.想睡觉,偶然
c语言
sycmancia2 小时前
C++进阶01——示例
开发语言·c++
CoderCodingNo2 小时前
【GESP】C++五级/四级练习题 luogu-P1413 坚果保龄球
开发语言·c++·算法
眼眸流转2 小时前
Java代码变更影响分析(一)
java·开发语言