【发布时间】:2018-07-02 16:50:47
【问题描述】:
我试图找出无符号数据类型的最小值和最大值。我知道最小无符号值为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。为什么输出不同?
【问题讨论】:
-
也许您使用错误的格式说明符打印它?
-
UINT_MAX 在位方面与二进制补码表示法中的 -1 相同。您可能会将其打印为有符号整数。
标签: c types unsigned unsigned-integer unsigned-long-long-int