1、
int a;a=198;
printf("%d",a);---198
printf("%c",a);---?
定义一个整数a=198,
第一个输出都是a的值
第二个输出是字符,因为a=198>127(一个字节大小),所以去掉前面部分,保留后面一个字节,8位二进制-58(198-256=-58)。
2、char a;a=198;
printf("%d",a);---(-58)
printf("%c",a);---?
第一个输出为保留一位字节后的c的整型-58(198-256)
第二个输出同样,因为a=198>127(一个字节大小),所以去掉前面部分,保留后面一个字节,8位二进制-58(198-256=-58)。
(注:char是一个8位的有符号类型,他的取值范围是-128 ~
127,当超过最大值时,自动从最小值开始往上加,即:198-256=-58;-58没有此值,输出‘?’号,如果大于了256那么又会从新按照ASCll码来输出)
归纳:
char型中输出%d也要满足char只占一个字节的条件;
最后总结一句,无论开头定义的a是什么类型的数,只要输出时%c,就必须转化成1个字节大小。