为了账号安全,请及时绑定邮箱和手机立即绑定

求答案,跪拜大神

求答案,跪拜大神

C
qq_守夜人_11 2017-10-14 09:46:05
前边我就不写了,重点是char c1,c2;c1=197;c2=198;printf("%c,%c",c1,c2);printf("%d,%d",c1,c2);输出结果为毛是?,?-59,-58
查看完整描述

2 回答

已采纳
?
xungeer29

TA贡献46条经验 获得超20个赞

197,198超出ASCII码范围了,无法输出char型c1,c2,输出int型超出127就从-128往前计数。127+1=-128,所以197输出-59,198输出-58

查看完整回答
1 反对 回复 2017-10-14
?
onemoo

TA贡献883条经验 获得超454个赞

那你期望打印出什么呢? 

c1 c2 都是字符型。printf 中 %c 表示将它们按照字符来打印,一般用的字符编码都是 ASCII,你去查查 197 和 198 在 ASCII 中表示什么字符。如果你的终端显示不出这些字符就会打印出问号。

%d 表示按照整型来打印。char 也是整型,只占用是一字节。197 和 198 在一字节中最高位为 1。如果 char 是有符号整型的话,那它表示的值就是负值,197 和 198 分别为 -59 -58。看起来你这里 char 是有符号整型,所以最后打印出两个负数。

查看完整回答
2 反对 回复 2017-10-14
  • 2 回答
  • 0 关注
  • 2059 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信