char与unsigned char 区别

zhongyuanceshi 2008-10-15 09:08:15
请问:char与unsigned char 有什么区别?在工程中什么时候用char 什么时候用unsigned char,谢谢!
...全文
24766 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
shimocchi 2012-05-31
  • 打赏
  • 举报
回复
unsigned char 用作 byte咯?
qq493288977 2012-05-17
  • 打赏
  • 举报
回复
char 转 int 时,用符号扩展方式

unsigned char 转 int 时, 用零扩展方式
handanwxd 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jackzhhuang 的回复:]
本质上都是8位,即一个字节

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

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

若你是以char读取这8个字节,由于最高位被当作符号位,若位运算大于127就会溢出。
[/Quote]
UP
六月云飞 2011-04-07
  • 打赏
  • 举报
回复
有符号,没符号的差别
redshark2010 2010-12-27
  • 打赏
  • 举报
回复
up.....................
wangyunlonggzh 2009-05-15
  • 打赏
  • 举报
回复
谁说字符是一样的?
xueyu32 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jackzhhuang 的回复:]
本质上都是8位,即一个字节

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

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

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

Good..........
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 realdragon2 的回复:]
记得有一个陷阱, 当 unsigned char x=255时, x++之后, x的值变为0了.
[/Quote]
o(∩_∩)o...
ForestDB 2008-10-16
  • 打赏
  • 举报
回复
char就是char,unsigned char一般当byte用。
aozhi 2008-10-16
  • 打赏
  • 举报
回复
signed char -128~127
unsigned char 0~255
通过编译选项可以设置char为signed char、也可以设置为unsigned char。
tc就可以、自己找找吧。
once_and_again 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 elmnd 的回复:]
signed:-128~127,
unsigned:0~255
[/Quote]..
dumeifang 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tangtang02520 的回复:]
补充一下:
char 可能是signed char,也可能是unsigned char。这个取决于你的编译器
如果是signed char ,8位的话取值范围是-128..127
而unsigned char 的取值范围是0..255
[/Quote]

up
xtdumpling 2008-10-16
  • 打赏
  • 举报
回复
mark
realdragon2 2008-10-15
  • 打赏
  • 举报
回复
记得有一个陷阱, 当 unsigned char x=255时, x++之后, x的值变为0了.
jackzhhuang 2008-10-15
  • 打赏
  • 举报
回复
本质上都是8位,即一个字节

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

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

若你是以char读取这8个字节,由于最高位被当作符号位,若位运算大于127就会溢出。
e_sharp 2008-10-15
  • 打赏
  • 举报
回复
表示的范围不同
LiTuX 2008-10-15
  • 打赏
  • 举报
回复
一般不会产生什么大的问题,只要你不是对它进行字节扩展。

在进行字节扩展时,比如将char或者unsigned char赋值到short,int,long等等,按%d格式输出等时,才会有不同。

但是,一般好像不会这么做的吧??(除非有特殊应用)
yangkunhenry 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tangtang02520 的回复:]
补充一下:
char 可能是signed char,也可能是unsigned char。这个取决于你的编译器
如果是signed char ,8位的话取值范围是-128..127
而unsigned char 的取值范围是0..255
[/Quote]
up
Topkiller1141 2008-10-15
  • 打赏
  • 举报
回复
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等同.
Longinc 2008-10-15
  • 打赏
  • 举报
回复
转换为整型数时,有表示范围的区别
加载更多回复(3)

70,004

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧