22.5 Integers
Implementation-Defined Behavior for Integers is covered in section G.3.5 of the ANSI C Standard.
The following table describes the amount of storage and range of various types of integers: (ISO 6.1.2.5)
Designation | Architecture | Size (bits) | Range |
---|---|---|---|
char |
All | 8 | -128 ... 127 |
signed char |
All | 8 | -128 ... 127 |
unsigned char |
All | 8 | 0 ... 255 |
short |
All | 16 | -32768 ... 32767 |
signed short |
All | 16 | -32768 ... 32767 |
unsigned short |
All | 16 | 0 ... 65535 |
int |
dsPIC33C/E/F and dsPIC30F | 16 | -32768 ... 32767 |
dsPIC33A | 32 | -2147483648 ... 2147483647 | |
signed int |
dsPIC33C/E/F and dsPIC30F | 16 | -32768 ... 32767 |
dsPIC33A | 32 | -2147483648 ... 2147483647 | |
unsigned int |
dsPIC33C/E/F and dsPIC30F | 16 | 0 ... 65535 |
dsPIC33A | 32 | 0 ... 4294867295 | |
long |
All | 32 | -2147483648 ... 2147483647 |
signed long |
All | 32 | -2147483648 ... 2147483647 |
unsigned long |
All | 32 | 0 ... 4294867295 |
long long |
All | 64 | -9223372036854775808 ... 9223372036854775807 |
signed long long |
All | 64 | -9223372036854775808 ... 9223372036854775807 |
unsigned long long |
All | 64 | 0 ... 18446744073709551615 |
What is the result of converting an integer to a shorter signed integer, or the result of converting an unsigned integer to a signed integer of equal length, if the value cannot be represented? (ISO 6.2.1.2)
There is a loss of significance. No error is signaled.
What are the results of bitwise operations on signed integers? (ISO 6.3)
Shift operators retain the sign. Other operators act as if the operand(s) are unsigned integers.
What is the sign of the remainder on integer division? (ISO 6.3.5)
+
What is the result of a right shift of a negative-valued signed integral type? (ISO 6.3.7)
The sign is retained.