求答案,跪拜大神

前边我就不写了,重点是

char c1,c2;

c1=197;

c2=198;

printf("%c,%c",c1,c2);

printf("%d,%d",c1,c2);

输出结果为毛是

?,?

-59,-58

qq_守夜人_11
浏览 2060回答 2
2回答

xungeer29

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

onemoo

那你期望打印出什么呢? c1 c2 都是字符型。printf 中 %c 表示将它们按照字符来打印,一般用的字符编码都是 ASCII,你去查查 197 和 198 在 ASCII 中表示什么字符。如果你的终端显示不出这些字符就会打印出问号。%d 表示按照整型来打印。char 也是整型,只占用是一字节。197 和 198 在一字节中最高位为 1。如果 char 是有符号整型的话,那它表示的值就是负值,197 和 198 分别为 -59 -58。看起来你这里 char 是有符号整型,所以最后打印出两个负数。
打开App,查看更多内容
随时随地看视频慕课网APP