UINT_MAX输出后为什么是-1

 

无符号INT最大二进制为(11111111111111111111111111111111)也是十六进制(0xffffffff)

如果你当成有符号数取补码后输出就得-1;

如果你当成无符号数就是最大数即:4294967295

例程如下:

#include <stdio.h>

#include <limits.h>

int main(int argc, char *argv[])

{

    unsigned int i = UINT_MAX;

    printf("%u\n", i);       //无符号

    printf("%d\n", i);        //有符号

    return 0;

}

你可能感兴趣的:(int)