Jaya-33 发表于 2020-7-27 17:15:15

“S1E7:取值范围”课后作业

“S1E7:取值范围”这节课后作业中,第一个敲代码的题%d,以及%u用于输出ASCII码的形势,但是255的ASCII码不是255啊,为什么输出会是255。所以为什么不用printf(“%hhc”);

zltzlt 发表于 2020-7-27 17:17:31

把题目发上来,这样方便别人解答

巴巴鲁 发表于 2020-7-27 17:58:26

%u是输出无符号整形使用的符号,哪是什么ASCII码啊

SHRS23 发表于 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

风过无痕1989 发表于 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.
页: [1]
查看完整版本: “S1E7:取值范围”课后作业