<limits.h>
provides macros that specify the minimum and maximum value for a few data types: CHAR_BIT | Number of bits in a char |
CHAR_MIN , CHAR_MAX , SCHAR_MIN , SCHAR_MAX , UCHAR_MIN , UCHAR_MAX | Minimum/maximum value of char and signed /unsigned char |
SHRT_MIN , SHRT_MAX , USHRT_MAX | Min/max value for short and unsigned short |
INT_MIN , INT_MAX , UINT_MAX | Min/max value for int and unsigned int |
LONG_MIN , LONG_MAX , ULONG_MAX | Min/max value for long , max for unsigned long |
LLONG_MIN , LLONG_MAX , ULLONG_MAX | Min/max for long long , max for unsigned long long |
#include <stdio.h> #include <stdint.h> #include <stdbool.h> #include <uchar.h> #include <wchar.h> #include <math.h> // float_t, double_t #define out(datatype) printf("%-20s: %2d bytes\n", #datatype, sizeof(datatype)); int main() { out(bool ) out(char ) out(char16_t ) out(char32_t ) out(double ) out(double_t ) out(float ) out(float_t ) out(int ) out(int_fast8_t ) out(int_fast16_t ) out(int_fast32_t ) out(int_fast64_t ) out(int_least8_t ) out(int_least16_t ) out(int_least32_t ) out(int_least64_t ) out(intmax_t ) out(intptr_t ) out(mbstate_t ) out(long ) out(long double ) out(long long ) out(long long int ) out(short ) out(short int ) out(uint8_t ) out(uint8_t ) out(uint16_t ) out(uint32_t ) out(uint64_t ) out(uintmax_t ) out(uintptr_t ) out(uint_fast8_t ) out(uint_fast16_t ) out(uint_fast32_t ) out(uint_fast64_t ) out(uint_least8_t ) out(uint_least16_t) out(uint_least32_t) out(uint_least64_t) out(void* ) out(wchar_t ) out(wint_t ) }