How can I print maximum value of an unsigned integer?

后端 未结 8 625
失恋的感觉
失恋的感觉 2020-12-19 02:13

I want to print the maximum value of the unsigned integer which is of 4 bytes.

#include \"stdafx.h\"
#include \"conio.h\"

int _tmain(int argc, _TCHAR* argv[         


        
相关标签:
8条回答
  • 2020-12-19 02:43

    Use %u as the format string to print unsigned int, %lu for unsigned long, and %hu for unsigned short.

    0 讨论(0)
  • 2020-12-19 02:44

    Curious and easy way to do this is just

    printf("%lu",-1);
    

    it prints whatever the biggest unsigned in your computer:)

    0 讨论(0)
  • 2020-12-19 02:45

    Here is the code:

    #include <stdio.h>
    
    int main(void) {
        unsigned int a = 0;
        printf("%u", --a);
        return 0;
    }
    

    Output:

    4294967295

    How it works is that 0 is the minimum value for unsigned int and when you further decrease that value by 1 it wraps around and moves to the highest value.

    0 讨论(0)
  • 2020-12-19 02:49

    There is the macro defined in <limits.h>: UINT_MAX.

    0 讨论(0)
  • 2020-12-19 02:56

    The %d format treats its argument as a signed int. Use %u instead.

    But a better way to get the maximum value of type unsigned int is to use the UINT_MAX macro. You'll need

    #include <limits.h>
    

    to make it visible.

    You can also compute the maximum value of an unsigned type by converting the value -1 to the type.

    #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;
    }
    

    Note that the UINT_MAX isn't necessarily 0xffffffff. It is if unsigned int happens to be 32 bits, but it could be as small as 16 bits; it's 64 bits on a few systems.

    0 讨论(0)
  • 2020-12-19 02:59

    Use %u as the printf format string.

    0 讨论(0)
提交回复
热议问题