Reputation: 1545
I was reading a old C book and according to that
int range values from -32768 to +32767.
where as my machine can hold a larger int than that limit how can I find the range of these data types(short, int, long, double, float) specific to my machine?
are there any methods for that?
Upvotes: 3
Views: 516
Reputation: 968
From this, take a look at the footnote:
If you run the following code on your system, it should shed some insight because the value returned may or may not differ from the ones in the above link.
#include <stdio.h>
#include <float.h>
#include <limits.h>
int main() {
printf("\t\tUsing <limits.h> library definitions...\n");
printf("CHAR\n");
printf("signed char max: %d\n", SCHAR_MAX);
printf("unsigned char max: %u\n", UCHAR_MAX); // Note use of u, formatting output
printf("signed char min: %d\n", SCHAR_MIN);
printf("SHORT\n");
printf("signed short min: %d\n", SHRT_MIN);
printf("signed short max: %d\n", SHRT_MAX);
printf("unsigned short max: %d\n", USHRT_MAX);
printf("INT\n");
printf("signed int max: %d\n", INT_MAX);
printf("unsigned int max: %u\n", UINT_MAX);
printf("signed int min: %d\n", INT_MIN);
printf("LONG\n");
printf("signed long max: %d\n", LONG_MAX);
printf("unsigned long max: %u\n", ULONG_MAX);
printf("signed long min: %d\n", LONG_MIN);
printf("FLOAT\n");
printf("signed float max: %e\n", FLT_MAX);
printf("signed float min: %e\n", FLT_MIN);
printf("DOUBLE\n");
printf("signed double max: %e\n", DBL_MAX);
printf("signed double min: %e\n", DBL_MIN);
return 0;
}
Upvotes: 4
Reputation: 133557
Header <limits.h>
provides these informations while <stdint.h>
allows you to specify specific width integers:
INT_MAX
INT_MIN
int32_t value; // to have an integer of exactly 32 bits
Upvotes: 1
Reputation: 11973
I hope I understood your qestion correctly.
You can take a look at limits.h
, where you can find the sizes of integral types. Take a look here.
This header defines constants with the limits of fundamental integral types for the specific system and compiler implementation used.
Upvotes: 2