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[
Use %u as the format string to print unsigned int, %lu for unsigned long, and %hu for unsigned short.
Curious and easy way to do this is just
printf("%lu",-1);
it prints whatever the biggest unsigned in your computer:)
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.
There is the macro defined in <limits.h>: UINT_MAX.
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.
Use %u as the printf format string.