Guarantees exact-width integers regardless of platform. Essential for portable code, network protocols, and embedded systems.
Include: #include <stdint.h> | Compile: gcc -Wall -o prog prog.c
| Name | Prototype / Value | Description |
|---|---|---|
| int8_t | typedef | Signed 8-bit integer (-128 to 127) |
| uint8_t | typedef | Unsigned 8-bit integer (0 to 255) |
| int16_t | typedef | Signed 16-bit integer |
| uint16_t | typedef | Unsigned 16-bit integer |
| int32_t | typedef | Signed 32-bit integer |
| uint32_t | typedef | Unsigned 32-bit integer |
| int64_t | typedef | Signed 64-bit integer |
| uint64_t | typedef | Unsigned 64-bit integer |
| intptr_t | typedef | Signed integer wide enough to hold a pointer |
| uintptr_t | typedef | Unsigned integer wide enough to hold a pointer |
| INT8_MAX | 127 | Maximum value of int8_t |
| UINT8_MAX | 255 | Maximum value of uint8_t |
| INT32_MAX | 2147483647 | Maximum value of int32_t |
| INT64_MAX | 9223372036854775807 | Maximum value of int64_t |
Copy, save as demo.c, and compile with the command shown at the bottom.
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int main(void) {
int8_t a = 127;
uint8_t b = 255;
int32_t c = INT32_MAX;
uint64_t d = UINT64_MAX;
printf("int8_t max = %"PRId8"\n", a);
printf("uint8_t max = %"PRIu8"\n", b);
printf("int32_t max = %"PRId32"\n", c);
printf("uint64_t max = %"PRIu64"\n", d);
printf("sizeof(int32_t) = %zu bytes\n", sizeof(int32_t));
return 0;
}
/* Compile: gcc -Wall -std=c99 -o stdint_demo stdint_demo.c */