鱼C论坛

 找回密码
 立即注册
查看: 595|回复: 2

[已解决]关于S1E7讲课后作业 动动手第一问

[复制链接]
发表于 2020-7-16 09:49:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么无法打印char类型字符?
为什么对%d和%u调换后打印其对应的 ASCII 码的数值相反?
关于打印有符号数和无符号数是否取决于输出格式,而不取决于对其类型的声明?
捕获.PNG
001.PNG
最佳答案
2020-7-16 10:19:09
1、因为char型(即ascii码)的上限是127,自然无法打印255
2、这个需要了解有无符号整数在内存中的存储情况
char型占1个字节,即8个二进制数位,其中第一位表示正负
例如:11111111表示-128,01111111表示+127
而无符号char型也占8个数位,但没有表示正负的符号
例如:11111111表示255,01111111表示127
给i和j赋值255时,实际上相当于赋值11111111
它们虽然一个有符号,一个无符号,但内存中的数值都是11111111
当用%d输出时,因为%hhd的最大值为127,所以产生了溢出,于是自动输出-1
当用%u输出时,没有发生溢出,因此正常输出
3、是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 10:18:43 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 10:19:09 | 显示全部楼层    本楼为最佳答案   
1、因为char型(即ascii码)的上限是127,自然无法打印255
2、这个需要了解有无符号整数在内存中的存储情况
char型占1个字节,即8个二进制数位,其中第一位表示正负
例如:11111111表示-128,01111111表示+127
而无符号char型也占8个数位,但没有表示正负的符号
例如:11111111表示255,01111111表示127
给i和j赋值255时,实际上相当于赋值11111111
它们虽然一个有符号,一个无符号,但内存中的数值都是11111111
当用%d输出时,因为%hhd的最大值为127,所以产生了溢出,于是自动输出-1
当用%u输出时,没有发生溢出,因此正常输出
3、是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 20:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表