闲云流水的点点滴滴

char是表示unsigned char 还是signed char?

最近在工作遇到一个问题,使用了一个WE_SINT8,WE_SINT8是如下定义的typedef char WE_SINT8,当我给定义为WE_SINT8的变量赋负-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要少写,这样以后移植工作就会顺利很多。 我有一个疑问,为啥char可以有编译器来指定是 signed char还是unsigned char,为啥short和int都默认为signed short和singed int.没有编译器开关来设定呢????

posted on 2007-09-25 18:06 闲云流水 阅读(398) 评论(0)  编辑 收藏 引用 所属分类: 技术

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