C语言初级问题

为什么相对应的结果是这样的,求大神解答!

printf("c1=%c,c2=%c\n",c1,c2);这里是要输出ASCII为197和198对应的字符,由于ASCII码只有127个,197和198已经超过了这个范围,因此显示的是一个随机字符
printf("c1=%d,c2=%d\n",c1,c2);这里是要输出c1和c2的值,由于c1和c2是字符型变量只有1个字节的存储空间,c1的值197对应的二进制为1 1000101(只用一个字节表示),由于首位为1,所以是负数,且后面1000101是补码,对应的原码是取反加1,即0111011,换成十进制就是59,所以197按照%d(有符号十进制输出)输出的结果就是-59。对于c2的输出也是一样的,你可以自己计算验证一下
温馨提示:答案为网友推荐,仅供参考
相似回答