当我试图打印'UINT_MAX'时,我得到它-1,为什么会这样?这是我在'main()'中唯一拥有的东西,一个打印'UINT_MAX'的printf语句
答案 0 :(得分:0)
您使用了%d
格式代码,该代码将其参数解释为带符号的int
。您使用的是双补码系统,因此UINT_MAX
(0xFFFFFFFF
)被解释为带符号的int
,等于-1
。如果您要将其解释为unsigned
,请使用%u
。
答案 1 :(得分:0)
您可以使用printf()
进行打印printf("%u\n", UINT_MAX);
您需要使用u
说明符man printf。
为什么你用d
说明符得到-1?这是因为在内存中如何处理有符号整数。
unsigned integer
从0开始,在内存中它是一个简单的二进制系统。
decimal =>二进制
有符号整数使用一个位来解释为负数,这是令人困惑的,因为当它被解释为int时,unsigned int的最大值是-1。
8位整数的例子:
如您所见,第一位用作符号位。
尝试使用此site