1103139787 发表于 2020-7-16 09:49:29

关于S1E7讲课后作业 动动手第一问

为什么无法打印char类型字符?
为什么对%d和%u调换后打印其对应的 ASCII 码的数值相反?
关于打印有符号数和无符号数是否取决于输出格式,而不取决于对其类型的声明?

mejoy2020 发表于 2020-7-16 10:18:43

111

lhgzbxhz 发表于 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、是的
页: [1]
查看完整版本: 关于S1E7讲课后作业 动动手第一问