力卉编程 | C语言 | 无符号和有符号的对比

2020-02-28  本文已影响0人  力卉编程
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时,则有区别了。

文 | 力卉编程

上一篇 下一篇

猜你喜欢

热点阅读