C语言初级问题为什么相对应的结果是这样的,
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/24 09:39:58
C语言初级问题
![](http://img.wesiedu.com/upload/d/66/d66b672e55c5312bc41794029846d937.jpg)
![](http://img.wesiedu.com/upload/4/12/41222c87d92adcdb4d5529db79958429.jpg)
为什么相对应的结果是这样的,
![](http://img.wesiedu.com/upload/d/66/d66b672e55c5312bc41794029846d937.jpg)
![](http://img.wesiedu.com/upload/4/12/41222c87d92adcdb4d5529db79958429.jpg)
为什么相对应的结果是这样的,
![C语言初级问题为什么相对应的结果是这样的,](/uploads/image/z/16730377-25-7.jpg?t=C%E8%AF%AD%E8%A8%80%E5%88%9D%E7%BA%A7%E9%97%AE%E9%A2%98%E4%B8%BA%E4%BB%80%E4%B9%88%E7%9B%B8%E5%AF%B9%E5%BA%94%E7%9A%84%E7%BB%93%E6%9E%9C%E6%98%AF%E8%BF%99%E6%A0%B7%E7%9A%84%2C)
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的输出也是一样的,你可以自己计算验证一下
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的输出也是一样的,你可以自己计算验证一下