你好!!!
以下我们讨论的是我们定义的有符号的字符类型即char a,而不是unsigned char a;
比如:把129赋值给a,即a=129,首先整型129在内存中占2个字节(有的系统不同,也可能占4个字节,我们讨论的是占2个字节):0000 0000 10000 1010
而字符占一个字节,因此赋值后会把整型的低八位赋值给字符变量a ,即
1000 1010,它的最高为是1,代表负值,计算机处理负值是按补码的方式处理,即补码是(楼主不知道的话可以自己找点资料看看);1111 0101,最高为是1代表是负数即为-127
代码:
#include <stdio.h>
void main()
{
char a=129;
printf("%d\n",a);
}
结果:
-127
Press any key to continue
要是把522赋值给a即a=522;522对应的二进制是0000 0010 0000 1010
也是把低八位赋值给a;即:0000 1010,最高为是0代正数,计算机处理正数时,补码和二进制一样即 :0000 1010,对应的十进制是10
代码:
#include <stdio.h>
void main()
{
char a=522;
printf("%d\n",a);
}
测试:
10
Press any key to continue
温馨提示:答案为网友推荐,仅供参考