无符号Int的最大值是-1

时间:2018-01-23 19:02:24

标签: c types unsigned unsigned-integer unsigned-long-long-int

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

1 个答案:

答案 0 :(得分:3)

Whats the format specifier are you using to print those values ? These kind of error mostly occur due to wrong format specifier.

#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;
}