【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

相关推荐
zhuhezhang2 分钟前
一个用golang开发的文本对比工具
开发语言·后端·golang·wails
王杨游戏养站系统5 分钟前
3分钟搭建1个游戏下载站网站教程!SEO站长养站系统!
开发语言·前端·游戏·游戏下载站养站系统·游戏养站系统
chushiyunen5 分钟前
lua脚本笔记、redis使用lua解锁
redis·笔记·lua
弘毅 失败的 mian5 分钟前
嵌入式系统观
数据库·经验分享·笔记·物联网·嵌入式
临溟夜空的繁星10 分钟前
C++ STL—— stack 和 queue
开发语言·c++
Yao.Li10 分钟前
Dify 本地运行实操笔记
人工智能·笔记·python
小年糕是糕手10 分钟前
【35天从0开始备战蓝桥杯 -- Day7】
开发语言·jvm·数据库·c++·蓝桥杯
网络点点滴14 分钟前
customRef的强大之处
开发语言·前端·javascript
柒.梧.14 分钟前
深入理解AQS:Java并发编程的核心基石
java·开发语言
磊 子14 分钟前
类和对象—>析构+拷贝+运算符重载
开发语言·c++·算法