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

相关推荐
2601_966949653 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
滕州市燕猫虎计算机科技工作室个体工商户3 小时前
Java锁
java·开发语言
派葛穆3 小时前
Lerobot -飞特舵机ST-3215双舵机联动(ESP_NOW)
c语言
多加点辣也没关系3 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2334 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21034 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客4 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
新时代牛马6 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三8446 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker