【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

相关推荐
aramae14 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
泡海椒15 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Beyond_System|系统之外16 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙552317 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
zjxtxdy18 小时前
SPI通信协议
笔记·单片机
Bruce_Liuxiaowei19 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖
彧azz20 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
aramae21 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他
bessyon21 小时前
信息透明度与决策效率:一个技术视角的分析
笔记