【发布时间】:2014-03-19 05:51:56
【问题描述】:
在C程序中,如果整数为signed integer,则最高位为1,否则为0。
假设char和unsigned char,signed char的范围是-128到127和unsigned char是0到255,但实际上它们的十六进制范围是0x00 到 0xff。
我现在的问题是如果char和unsigned char使用8位二进制数存储在内存中,计算机本身如何知道它是signed还是unsigned?
char a = 0xff; printf("%d", a); //its result is -1.
unsigned char a = 0xff; printf("%d", a); //its result is 255.
在上面的例子中,printf 如何知道0xff 的值是有符号还是无符号?是不是只取决于a的定义?
【问题讨论】:
-
顺便说一句,C 不区分
0xff、0377和255。