====== Fixed size integer types ======
* [[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html|stdint.h]]
* [[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html|inttypes.h]]
* [[https://stackoverflow.com/questions/13052880/format-specifier-of-int8-data-type-in-c]]
// gcc -Wall -std=c99 -pedantic int-types.c
#include
#include // intN_t, uintN_t, INTn_MAX, INTn_MIN, UINTn_MAX
int main(void)
{
int8_t i8 = INT8_MAX;
int16_t i16 = INT16_MAX;
int32_t i32 = INT32_MAX;
int64_t i64 = INT64_MAX;
uint8_t u8 = UINT8_MAX;
uint16_t u16 = UINT16_MAX;
uint32_t u32 = UINT32_MAX;
uint64_t u64 = UINT64_MAX;
printf("\n");
// 8bit
printf("INT8_MAX: %d\t\t\t", i8++);
printf("INT8_MIN: %d\t\t\t", INT8_MIN);
printf("max+1: %d\n", i8);
// 16bit
printf("INT16_MAX: %d\t\t", i16++);
printf("INT16_MIN: %d\t\t", INT16_MIN);
printf("max+1: %d\n", i16);
// 32bit
printf("INT32_MAX: %d\t\t", i32++);
printf("INT32_MIN: %d\t\t", INT32_MIN);
printf("max+1: %d\n", i32);
// 64bit
printf("INT64_MAX: %ld\t", i64++);
printf("INT64_MIN: %ld\t", INT64_MIN);
printf("max+1: %ld\n", i64);
printf("\n");
// unsigned 8bit
printf("UINT8_MAX: %u\t\t\t\t", u8++);
printf("max+1: %u\n", u8);
// unsigned 16bit
printf("UINT16_MAX: %u\t\t\t", u16++);
printf("max+1: %u\n", u16);
// unsigned 32bit
printf("UINT32_MAX: %u\t\t\t", u32++);
printf("max+1: %u\n", u32);
// unsigned 64bit
printf("UINT64_MAX: %lu\t", u64++);
printf("max+1: %lu\n", u64);
return 0;
}
INT8_MAX: 127 INT8_MIN: -128 max+1: -128
INT16_MAX: 32767 INT16_MIN: -32768 max+1: -32768
INT32_MAX: 2147483647 INT32_MIN: -2147483648 max+1: -2147483648
INT64_MAX: 9223372036854775807 INT64_MIN: -9223372036854775808 max+1: -9223372036854775808
UINT8_MAX: 255 max+1: 0
UINT16_MAX: 65535 max+1: 0
UINT32_MAX: 4294967295 max+1: 0
UINT64_MAX: 18446744073709551615 max+1: 0
// Print using PRI macros
// gcc -Wall -std=c99 -pedantic int-types.c
#include
#include // intN_t, uintN_t, INTn_MAX, INTn_MIN, UINTn_MAX
#include // PRIdN, PRIuN
int main(void)
{
int8_t i8 = INT8_MAX;
int16_t i16 = INT16_MAX;
int32_t i32 = INT32_MAX;
int64_t i64 = INT64_MAX;
uint8_t u8 = UINT8_MAX;
uint16_t u16 = UINT16_MAX;
uint32_t u32 = UINT32_MAX;
uint64_t u64 = UINT64_MAX;
printf("\n");
// 8bit
printf("INT8_MAX: %" PRId8 "\t\t\t", i8++);
printf("INT8_MIN: %" PRId8 "\t\t\t", INT8_MIN);
printf("max+1: %" PRId8 "\n", i8);
// 16bit
printf("INT16_MAX: %" PRId16 "\t\t", i16++);
printf("INT16_MIN: %" PRId16 "\t\t", INT16_MIN);
printf("max+1: %" PRId16 "\n", i16);
// 32bit
printf("INT32_MAX: %" PRId32 "\t\t", i32++);
printf("INT32_MIN: %" PRId32 "\t\t", INT32_MIN);
printf("max+1: %" PRId32 "\n", i32);
// 64bit
printf("INT64_MAX: %" PRId64 "\t", i64++);
printf("INT64_MIN: %" PRId64 "\t", INT64_MIN);
printf("max+1: %" PRId64 "\n", i64);
printf("\n");
// unsigned 8bit
printf("UINT8_MAX: %" PRIu8 "\t\t\t\t", u8++);
printf("max+1: %" PRIu8 "\n", u8);
// unsigned 16bit
printf("UINT16_MAX: %" PRIu16 "\t\t\t", u16++);
printf("max+1: %" PRIu16 "\n", u16);
// unsigned 32bit
printf("UINT32_MAX: %" PRIu32 "\t\t\t", u32++);
printf("max+1: %" PRIu32 "\n", u32);
// unsigned 64bit
printf("UINT64_MAX: %" PRIu64 "\t", u64++);
printf("max+1: %" PRIu64 "\n", u64);
return 0;
}