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

C语言里字符的有关问题

2012-03-25 
C语言里字符的问题char c1c1100011printf(%d,c1)打印结果为-85c11011printf(%d,c1)打印结果为-

C语言里字符的问题
char c1;
c1=100011;
printf("%d",c1);
打印结果为-85
c1=1011;
printf("%d",c1);
打印结果为-13
这里-85,-13是什么东西

[解决办法]
char类型的范围是-128~127。在内存中以8位补码形式存放。
1011在内存中是
0000 0011 1111 0011
截断,保留低位
所以在内存中是1111 0011
对应的原码就是-13
前面的类似。
[解决办法]
1011是十进制,对应的二进制是0000 0000 0000 0000 0000 0011 1111 0011
当你将十进制的1011赋值给char c1时,只是将他的低八位赋值给了c1,即c1的二进制表示就是
1111 0011,当你用%d打印的时候,要打印的十进制,是32位,打印的时候就会把高位补足,补足的方式是重复最高一位1,所以就变成了1111 1111 1111 1111 1111 1111 1111 0011,就变成了-13
-85类似。。。

热点排行