unsigned char和char的区别?

SHOUYU2 2010-12-01 06:27:01
unsigned char和char有什么区别啊?
我用sizeof去是1个字节的大小啊
...全文
225 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
flysnowhite 2010-12-07
  • 打赏
  • 举报
回复
取值范围不一样。
SHOUYU2 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 maoxing63570 的回复:]
一个叫unsigned char,另一个叫char
[/Quote]

白痴
maoxing63570 2010-12-07
  • 打赏
  • 举报
回复
一个叫unsigned char,另一个叫char
wizard_tiger 2010-12-07
  • 打赏
  • 举报
回复
unsigned char 范围0~255
signed char 范围-127~127
char 范围0~127
一般char在不同的编绎器要么是unsigned char要么是signed char所以char在两种交集之中才可移植。
ningweidong 2010-12-07
  • 打赏
  • 举报
回复
一个是有符号的,一个是无符号的,就这么多区别。
Proteas 2010-12-07
  • 打赏
  • 举报
回复
说不清楚。
hukui161 2010-12-06
  • 打赏
  • 举报
回复
char == signed char -128 ~ 127
unsigned char 0~255
寂寞的泡面 2010-12-06
  • 打赏
  • 举报
回复
一个有符号,一个无符号。char相当于signed char。
ForestDB 2010-12-03
  • 打赏
  • 举报
回复
其实是没什么特别区别的,一般signed用作整数运算,而unsigned用作bit/byte这样的运算。
详细的可以看看CSAPP第二章的介绍。
bdmh 2010-12-03
  • 打赏
  • 举报
回复
一个是无符号,一个是有符号
yong_f 2010-12-02
  • 打赏
  • 举报
回复
char 的范围是-128---127;
unsigned char 的范围是0---255;
这个在内存的存储空间都是一个字节。
如果取值在两个类型的并集中的话,可以看作是一样的,
如果不是的话。就不一样了,负数的编码一般都是反码
pliok 2010-12-01
  • 打赏
  • 举报
回复
因为char 型在不同的编译器下的取值范围可能会不同, 而unsigned char 类型在不同编译器下数值都是相同的
使用unsigned char 是为了程序的可移植性。
dubiousway 2010-12-01
  • 打赏
  • 举报
回复
大小一样,都是一个字节
but,

unsigned char ch=-1;

那么 ch >0 为 true
-------------------
char ch=-1;

ch >0 为 false
失落的凡凡 2010-12-01
  • 打赏
  • 举报
回复
signed char 和unsigned char的区别只在用作整型计算时有区别,当作字符用时基本没区别。
hell_wolf 2010-12-01
  • 打赏
  • 举报
回复
一个是无符号,一个是有符号。

不过char 和 signed char也不完全等价,要注意。
cranium 2010-12-01
  • 打赏
  • 举报
回复
大小是一样的,表示的数据不一样。

char 可能是有符号的字符也可能是代表没有符号的字符,这个好像取决于实现,VC下面char应该是有符号的。

unsigned char表示没有符号的字符。


char最高位为符号位,有正负区分,表示范围应该是 -128~127
unsigned char只能表示正数,范围在0-255
huofen2005 2010-12-01
  • 打赏
  • 举报
回复
char == signed char -128 ~ 127
unsigned char 0~255
ionlylove57 2010-12-01
  • 打赏
  • 举报
回复
因为128在这两个中, 编码相同,但是CPU对取出来的数据根据数据类型来理解那就有很大的差别了.
ionlylove57 2010-12-01
  • 打赏
  • 举报
回复
char 的范围是-128---127;
unsigned char 的范围是0---255;
它们之间的转化会有问题的,你看看这个会打出OK么?
#include <stdio.h>

int main()
{
unsigned char u_ch=128;

char ch = u_ch;

if(ch == u_ch)
printf("OK\n");
return 0;
}
羽飞 2010-12-01
  • 打赏
  • 举报
回复
貌似没啥区别

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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