【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

相关推荐
乐观勇敢坚强的老彭13 小时前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法
离陌在学C#13 小时前
C# 泛型:从基础到高级应用
开发语言·c#
ly768913 小时前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
SomeB1oody13 小时前
【RustyML入门】2.13. 孤立森林
开发语言·后端·机器学习·rust·教程
萧瑟余晖13 小时前
Java深入解析篇三十之Java日志框架
java·开发语言
Herbert_hwt13 小时前
【C语言基础】常量、选择结构与运算符全解析
c语言·开发语言·算法
demodeom13 小时前
Win11 + RTX 5080 本地 Coding 模型测试笔记(已弃坑)
笔记
AI视觉网奇14 小时前
动作识别 视频理解大模型
开发语言·python·音视频
SomeB1oody14 小时前
【RustyML入门】3.8. 正则化与归一化层
开发语言·后端·机器学习·rust·教程
__zRainy__14 小时前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript