【C语言】【数据存储】用%u打印char类型?用char存128?

1.题目一:

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

%u 是打印无符号整型

解题逻辑:
1. 原反补互换,截断

-128

原码:10000000...10000000

补码:11111111...10000000

(char类型占 1 个字节,8 个bit位)截断:10000000

2.整型提升:

char 默认 signed char 所以高位补符号位:11111111...10000000

3.%u打印的结果:

%u 是打印无符号整型,那么补码 11111111...10000000 中第一个 1 不是符号位,此时原码与补码相同,打印出来的就是二进制11111111...10000000所代表的十进制数:4294967168

2.题目二:

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

char 类型的存储范围是 -128~127 那么存了 128怎么打印?

必须将 128从低位截断

截断后是 10000000

整型提升:11111111...10000000

(整型提升时,只与变量类型有关,有符号的往高位加符号位,无符号的高位补 0!!)

所以下面的步骤和上一题一样

结果也是4294967168

相关推荐
Rabitebla6 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
麦麦麦当劳大王6 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy19907 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala
小lu飞7 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
只睡四小时7 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
码农小河668 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
东鹏特饮10 小时前
系统运维(传统/通用运维)面试题
开发语言·php
今天要早睡_10 小时前
C++01_入门基础复习
开发语言·c++
无心水11 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd11 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习