4.3.2 Integer Data Types
The MPLAB XC8 compiler supports integer data types with 1, 2, 4 and 8 byte sizes. Tabulated below are the supported data types and their corresponding size and arithmetic type.
Type | Size (bits) | Arithmetic Type |
---|---|---|
signed char |
8 | Signed integer |
unsigned char |
8 | Unsigned integer |
signed short |
16 | Signed integer |
unsigned short |
16 | Unsigned integer |
signed int |
16 | Signed integer |
unsigned int |
16 | Unsigned integer |
signed long |
32 | Signed integer |
unsigned long |
32 | Unsigned integer |
signed long long |
64 | Signed integer |
unsigned long long |
64 | Unsigned integer |
If no type signedness is specified (including char
types), then that type is signed
.
All integer values are represented in little endian format with the Least Significant Byte (LSB) at the lower address in the device memory.
Signed values are stored as a two’s complement integer value.
The range of values capable of being held by these types is summarized in the declarations
for <limits.h>
, contained in the Microchip Unified Standard Library
Reference Guide. The symbols presented there are preprocessor macros that are
available after including <limits.h>
in your source code. As the
size of data types are not fully specified by the C Standard, these macros allow for more
portable code which can check the limits of the range of values held by the type on this
implementation.
Macros are also available in <stdint.h>
which define
values associated with fixed-width types, such as int8_t
,
uint32_t
etc.