void print_uc(unsigned char v)
{
char c = v;
unsigned char uc = v;
unsigned int a = c, b = uc;
int i = c, j = uc;
printf("----------------\n");
printf("%%c: %c, %c\n", c, uc);
printf("%%X: %X, %X\n", c, uc);
printf("%%u: %u, %u\n", a, b);
printf("%%d: %d, %d\n", i, j);
}
int main(int argc, char *argv[])
{
print_uc(0x81);
print_uc(0x7F);
return 0;
}
结果显示:
----------------
%c: ?, ?
%X: FFFFFF81, 81
%u: 4294967169, 129
%d: -127, 129
----------------
%c: ,
%X: 7F, 7F
%u: 127, 127
%d: 127, 127
有无符号,在小于全数(28=256)的一半(27=128)时无区别,大于了就区别大了。
或者说:最高位若为0时,二者没有区别,若为0时,则有区别了。
文 | 力卉编程
网友评论