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

时间:2012-10-10 05:55:13

标签: c

我想打印无符号整数的最大值,即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?

8 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:14)

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

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

#include <limits.h>

使其可见。

您还可以通过将值-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;
}

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

答案 2 :(得分:6)

<limits.h>中定义了一个宏:UINT_MAX

答案 3 :(得分:4)

使用 %u 作为格式字符串打印unsigned int%luunsigned long%huunsigned short }}

答案 4 :(得分:3)

您应该使用<stdint.h><limits.h>,然后使用INT_MAX或适用于您的类型的任何限制。

答案 5 :(得分:2)

代码如下:

#include <stdio.h>

int main(void) {
    unsigned int a = 0;
    printf("%u", --a);
    return 0;
}

输出:

4294967295

工作原理是0unsigned int的最小值,当您进一步降低该值1时,它会回绕并移至最高值。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

好奇而简单的方法仅仅是

printf("%lu",-1);

它会打印您计算机中最大的未签名内容:)