鱼C论坛

 找回密码
 立即注册
查看: 777|回复: 4

[已解决]“S1E7:取值范围”课后作业

[复制链接]
发表于 2020-7-27 17:15:15 | 显示全部楼层 |阅读模式

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

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

x
“S1E7:取值范围”这节课后作业中,第一个敲代码的题%d,以及%u用于输出ASCII码的形势,但是255的ASCII码不是255啊,为什么输出会是255。所以为什么不用printf(“%hhc”);
最佳答案
2020-7-27 22:34:51
我去看了下答案,小甲鱼的参考答案讲解的已经很清楚了

printf 函数使用 %c 打印 char 类型的字符,使用 %d 和 %u 则打印其对应的 ASCII 码(其中 %d 打印带符号数,%u 打印无符号数)。signed char 和 unsigned char 使用 hh 说明其长度。

你的问题可能是对红字的理解出现了偏差,char类型虽然是字符型,实际上存储的是整数,当一个char类型变量被以%d或者%u格式输出时,就会输出它所存储的整数,这个整数是这个字符对应的ascii码

比如 char c = 'A'
当c变量被以%d或者%u格式输出时,输出的是'A'的ASCII码 65
这个例子中之所以两种格式都是65是因为65即在有符号char范围内-128-127,也在无符号char范围内0-255
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-27 17:17:31 | 显示全部楼层
把题目发上来,这样方便别人解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-27 17:58:26 | 显示全部楼层
%u是输出无符号整形使用的符号,哪是什么ASCII码啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-27 22:34:51 | 显示全部楼层    本楼为最佳答案   
我去看了下答案,小甲鱼的参考答案讲解的已经很清楚了

printf 函数使用 %c 打印 char 类型的字符,使用 %d 和 %u 则打印其对应的 ASCII 码(其中 %d 打印带符号数,%u 打印无符号数)。signed char 和 unsigned char 使用 hh 说明其长度。

你的问题可能是对红字的理解出现了偏差,char类型虽然是字符型,实际上存储的是整数,当一个char类型变量被以%d或者%u格式输出时,就会输出它所存储的整数,这个整数是这个字符对应的ascii码

比如 char c = 'A'
当c变量被以%d或者%u格式输出时,输出的是'A'的ASCII码 65
这个例子中之所以两种格式都是65是因为65即在有符号char范围内-128-127,也在无符号char范围内0-255
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 00:13:33 | 显示全部楼层
printf 的格式控制的完整格式:
% - .n l 或 h 格式字符
下面对组成格式说明的各项加以说明:
①%    :表示格式说明的起始符号,不可缺少。
②-      :有-表示左对齐输出,如省略表示右对齐输出。
③0     :有0表示指定空位填0,如省略表示指定空位不填。
④m.n  :m 指域宽,即对应的输出项在输出设备上所占的字符数。n 指精度。用于说明输出的实型数的小数位数。为指定 n 时,隐含的精度为 n=6 位。
⑤l或h   : l 对整型指 long 型,对实型指 double 型。h用于将整型的格式字符修正为 short 型。

一个h   表示 short,即 short int

两个h   表示 short short,即 char。
%hhx   用于输出 char
%hx    用于输出 short int.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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