char c1,c2; c1=197; c2=198; printf("c1=%c,c2=%c\n",c1,c2); p

问题描述:

char c1,c2; c1=197; c2=198; printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0;
#include
int main()
{
char c1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
运行后为什么是C1=?,C2=?
C1=-59,C2=-58,
1个回答 分类:综合 2014-11-22

问题解答:

我来补答
char类型的范围是 -128-127
unsigned char类型的范围是 0-255
你定义的超出范围了,溢出了.
再问: 嗯 然后又怎么会是 C1=?,C2=? C1=-59,C2=-58
再答: 没有对应的字符,或对应的字符不可打印就显示??这个了。 197转换成二进制是 11000101 截取后八位也就是 1000101 最前面的1表述负数,负数都是用补码表示的,转换成反码为1000100 转换成原码为 0111011 也就是 59,所以显示为 -59了。
再问: 截取后八位也就是 1000101? 这不是7位吗?
再答: 11000101 截取后八位也就是 1000101 这里有点错误,截取后八位也就是 11000101,写错了,最前面的一位是符号位,所以后面的转换中,不需要考虑其符号位。
 
 
展开全文阅读
剩余:2000
上一页:椭圆简单性质
下一页:求解这个表格