【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

相关推荐
〖是♂我〗42 分钟前
自定义数据集 使用scikit-learn中svm的包实现svm分类
开发语言·python
南玖yy1 小时前
C语言:整型提升
c语言·开发语言
iqay1 小时前
【C语言】填空题/程序填空题1
c语言·开发语言·数据结构·c++·算法·c#
程序猿编码1 小时前
自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
linux·c语言·c++·网络安全·shell·命令行
锐策1 小时前
『 C 』 `##` 在 C 语言宏定义中的作用解析
c语言
lsx2024061 小时前
ECharts 样式设置
开发语言
想拿高薪的韭菜1 小时前
人工智能第2章-知识点与学习笔记
人工智能·笔记·学习
一只码代码的章鱼2 小时前
计算机网络 应用层 笔记 (电子邮件系统,SMTP,POP3,MIME,IMAP,万维网,HTTP,html)
笔记·计算机网络·microsoft
沈韶珺2 小时前
Elixir语言的安全开发
开发语言·后端·golang
go54631584653 小时前
python 从知网的期刊导航页面抓取与农业科技相关的数据
开发语言·python·科技