| Type | Width | Range | AUTOSAR Alias | Typical Embedded Use |
|---|---|---|---|---|
| uint8_t | 8-bit | 0–255 | uint8 | GPIO register fields, CAN data bytes, flags |
| int8_t | 8-bit signed | −128–127 | sint8 | Signed sensor offsets, signed status |
| uint16_t | 16-bit | 0–65535 | uint16 | ADC raw values, timer counts, CAN IDs |
| int16_t | 16-bit signed | −32768–32767 | sint16 | Signed sensor readings (temperature, current) |
| uint32_t | 32-bit | 0–4 294 967 295 | uint32 | Timer compare values, addresses, CRC results |
| int32_t | 32-bit signed | ±2 147 483 648 | sint32 | Accumulated sums, fixed-point scaled values |
| uint64_t | 64-bit | 0–18.4×10¹⁸ | uint64 | Timestamp (STM nanoseconds), large counters |
⚠️ Never use plain int/short/long in automotive code
The sizes of int, short, and long are implementation-defined and change across compilers and architectures. On a 32-bit Aurix, int is 32 bits; on an 8-bit AVR it is 16 bits. MISRA-C:2012 Rule 6.1 requires that bit fields use explicitly-sized types. Always use uint8_t/int16_t etc. from <stdint.h> or AUTOSAR Platform_Types.h.