读书人

只有十分见谅解决方案

发布时间: 2012-02-08 19:52:21 作者: rapoo

只有十分,见谅
谭浩强的 《C语言程序设计》第二版 52页

char c =130;//char 的范围是-128——127,为什么不发生编译错误?
printf( "%d ", c);

为什么输出-126呢。具体是怎么得到的?



[解决办法]
由于字符char是由补码表示
所以才会有这样结果

130
2进制表示是10000010 
10000010 是 -126的补码

[解决办法]
char 的范围是-128——127,为什么不发生编译错误?

对于char
计算机只接受一个字节 8位
超过的会被截断
你就是输入456它也照样编译
不过超过的位会被截掉
[解决办法]
如果你把-128——127看成一个循环。


[解决办法]
你看看130是不是等于-126


`
[解决办法]
计算机会自动把溢出的数当成补码来处理的!
[解决办法]
实际在老谭的书上已经讲过你问的问题的答案了,再好好看看了 。
[解决办法]
呵呵,老谭的C语言可是经典呢,要仔细看

读书人网 >C++

热点推荐