- 论坛徽章:
- 0
|
回复 #14 zx_wing 的帖子
那我给你科普一下
15 The three types char, signed char, and unsigned char are collectively called
the character types. The implementation shall define char to have the same range,
representation, and behavior as either signed char or unsigned char.35)
ISO/IEC 9899:1999 (E)标准的第49页
gcc有一个选项可以用来控制char究竟是采用signed还是unsigned的实现
- #include <stdio.h>
- int main(void){
- int a = (char) 0xff;
- printf("%08x\n",a);
- return 0;
- }
复制代码kernel@fairland:~/programming/C$ cc -fsigned-char char.c -o char
kernel@fairland:~/programming/C$ ./char
ffffffff
kernel@fairland:~/programming/C$ cc -funsigned-char char.c -o char
kernel@fairland:~/programming/C$ ./char
000000ff
kernel@fairland:~/programming/C$ cc char.c -o char
kernel@fairland:~/programming/C$ ./char
ffffffff
默认是signed,这是为了保证ABI的一致性,就跟为什么double在gcc上默认是4个字节对齐一个道理(除非加-malign-double)
[ 本帖最后由 churchmice 于 2009-12-9 19:23 编辑 ] |
|