1个回答
展开全部
char型对应数值是ASCII码,是有符号数。
而你代码中ch+32结果是129(97+32)。
第一参数按%c输出是?,因为127往后是扩展编码,不用做显示。
第二参数按%d输出,你前面赋值将129赋值给了char型的变量ch。
129是无符号数,赋值给ch后,ch的二进制码是1000,0001(129对应的无符号二进制)。
但ch作为字符型,是有符号数,所以最高位被解读成负号。这就变成了一个负数。
负数在计算机中是按照补码保存的。
因此,打印时要将补码转成原码:
1000,0001(补码)=>1000,0000(反码)=>1111,1111(原码)。
有符号二进制1111,1111转成10进制打印,就是-127。
追问
谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询