我想打印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;
}
Run Code Online (Sandbox Code Playgroud)
但我输出为-1和0.如何打印x = 4294967295?
Kei*_*son 14
该%d格式将它的参数作为签字 int.请%u改用.
但是获得类型最大值的更好方法unsigned int是使用UINT_MAX宏.你需要
#include <limits.h>
Run Code Online (Sandbox Code Playgroud)
让它可见
您还可以通过将值-1转换为类型来计算无符号类型的最大值.
#include <limits.h>
#include <stdio.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,UINT_MAX是不是一定 0xffffffff.它unsigned int恰好是32位,但可能只有16位; 它在几个系统上是64位.
这是代码:
#include <stdio.h>
int main(void) {
unsigned int a = 0;
printf("%u", --a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
4294967295
它是如何工作的,这0是最小值unsigned int,当你进一步减小该值时,1它会环绕并移动到最大值。