闲云流水的点点滴滴

char是signed char还是unsigned char??

        最近在工作遇到一个问题,当我给定义为char的变量赋负-1时,发现值变成了255。
        经过研究,发现是编译器把char 当作了unsigned char. 呵呵,以前的经验一般把char默认当作signed char的。后来用google搜索了一下.原来编译器有个开关的 -funsigned-char就把char当作unsiged char,  如果编译器带上-fsigned-char就会把char当作signed char.
        绝大多数系统,包括x86 GNU/Linux and Microsoft Windows,都把char当作singed char,而PowerPC and ARM processors会默认当作unsigned char.
       以后写代码时,还是写上signed char或unsigned char. 这样以后移植工作就会顺利很多。
       我有一个疑问,为啥char可以有编译器来指定是 signed char还是unsigned char,而short和int都默认为signed short和singed int.,并且没有编译器开关来设定呢????

posted on 2007-09-25 18:25 闲云流水 阅读(3533) 评论(2)  编辑 收藏 引用

评论

# re: char是signed char还是unsigned char?? 2007-09-26 08:56 dc

that's why microsoft defined the types like this: (windef.h)

typedef unsigned long DWORD;
typedef unsigned char BYTE;
typedef unsigned short WORD;
  回复  更多评论   

# re: char是signed char还是unsigned char?? 2007-09-26 10:11 hbqian

Wow...
That's a good way to solve the problem :)  回复  更多评论   

只有注册用户登录后才能发表评论。