首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

只有十分,见谅解决方案

2012-02-08 
只有十分,见谅谭浩强的《C语言程序设计》第二版52页charc130//char的范围是-128——127,为什么不发生编译错

只有十分,见谅
谭浩强的   《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语言可是经典呢,要仔细看

热点排行