Unsigned Int 的最大值是 -1

Maximum Value for Unsigned Int is it -1

我试图找出无符号数据类型的最小值和最大值。我知道最小无符号值为 0,最大值为 (2^n)-1。但是,当我尝试 运行 我的程序时( 我不能 post 我的代码,但你可以参考 this),我不断得到 - 1 为最大值。有人可以向我解释为什么吗?另外,UINT_MAX 是 4294967295,而 ULLONG_MAX 是 4294967295。但是,unsigned int 的最大值应该是 65535,而 unsigned long long int 应该是 +18,446,744,073,709,551,615.Why是输出不同吗?

您使用什么格式说明符来打印这些值? 此类错误大多是由于格式说明符错误引起的。

#include <stdio.h>
#include <limits.h>

int main()
{  
    printf("%u", UINT_MAX); // This will print 4294967295 (system dependent)
    printf("%d", UINT_MAX); // This will print -1
    return 0;
}