Search notes:

c datatypes

limits.h

The header file <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

Sizes in bytes

A simple c program to show the sizes of some data types in bytes:
#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        )

}
Github repository about-c, path: /datatypes/sizeof.c

See also

wchar_t
C language

Index