读书人

char与unsigned char 区别,该如何处理

发布时间: 2012-05-20 16:03:12 作者: rapoo

char与unsigned char 区别
请问:char与unsigned char 有什么区别?在工程中什么时候用char 什么时候用unsigned char,谢谢!

[解决办法]
同一个内存内容:10010000
你用char* 解释是-112
你用unsigned char* 解释是144
还是同样这个内存内容赋给整型值,用unsigned char 类型还是会得到144,用char类型的就会是负数。


真正的差别还是取决于你的程序。某些情况这两种类型表示都行。
[解决办法]
补充一下:
char 可能是signed char,也可能是unsigned char。这个取决于你的编译器
如果是signed char ,8位的话取值范围是-128..127
而unsigned char 的取值范围是0..255
[解决办法]
char 和 unsigned char是无符号的
两者都作为字符用的话是没有区别的,但当整数用时有区别:
char 整数范围为-128到127( 0x80__0x7F),
而unsigned char 整数范围为0到255( 0__0xFF )

多数情况下,char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个大整型 数域时,便会看到它们在符号扩展上的差异。另一个区别表现在当把一个介于128和255之间的数赋给signed char 变量时编译器必须先进行数值转化,同样还会出现警告。若使用十六进制进行赋值使用unsigned char 要方便一些.根据编译器具体实现情况不同,char要么和signed char等同,要么和unsigned char等同.

[解决办法]
本质上都是8位,即一个字节

char会把最高位当作符号位,unsigned char则全部用作正数位数,于是产生了-128~127和0~255的范围区别。

什么时候用unsigned char呢?如果你想拿这8个字节做位运算就需要用unsigned char。

若你是以char读取这8个字节,由于最高位被当作符号位,若位运算大于127就会溢出。

读书人网 >C语言

热点推荐