如何打印无符号整数的最大值?

我想打印4个字节的无符号整数的最大值。

#include "stdafx.h" #include "conio.h" int _tmain(int argc, _TCHAR* argv[]) { unsigned int x = 0xffffffff; printf("%d\n",x); x=~x; printf("%d",x); getch(); return 0; } 

但我输出为-1和0.如何打印x = 4294967295?

使用%u作为printf格式字符串。

%d格式将其参数视为signed int 。 请改用%u

但是获得unsigned int类型的最大值的更好方法是使用UINT_MAX宏。 你需要

 #include  

让它可见

您还可以通过将值-1转换为类型来计算无符号类型的最大值。

 #include  #include  int main(void) { unsigned int max = -1; printf("UINT_MAX = %u = 0x%x\n", UINT_MAX, UINT_MAX); printf("max = %u = 0x%x\n", max, max); return 0; } 

请注意, UINT_MAX 不一定是 0xffffffff 。 如果unsigned int恰好是32位,但它可能小到16位; 它在几个系统上是64位。

定义了宏: UINT_MAX

使用%u作为格式字符串来打印unsigned int%lu用于unsigned long%hu用于unsigned short

您应该使用然后使用INT_MAX或适合您的类型的任何限制。

printf(“%u”,~0); //用1填充unsigned int中的所有位并打印该值。