A reference for when working with integers, and looking for integer overflows and underflows.
When an integer type, such as an int or unsigned short, overflows (the variable is given a value greater than the maximum value it can hold), the integer “wraps around” and becomes the minimum value the type can store.
Similarly, when an integer type underflows (the variable is given a value smaller than the maximum value it can hold), the integer “wraps around” and becomes the maximum value the type can store.
Use the chart below to find the minimum and maximum values each type can hold.
Integer Size Chart
Type | Size In Bytes | Minimum Value | Maximum Value |
---|---|---|---|
char | 1 byte | -128 | +127 |
unsigned char | 1 byte | 0 | +255 |
short | 2 bytes | -32,768 | +32,767 |
unsigned short | 2 bytes | 0 | +65,535 |
int | 4 bytes | -2,147,483,648 | +2,147,483,647 |
long | 4 bytes | -2,147,483,648 | +2,147,483,647 |
unsigned int | 4 bytes | 0 | +4,294,967,295 |
unsigned long | 4 bytes | 0 | +4,294,967,295 |
long long | 8 bytes | -9,223,372,036,854,775,808 | +9,223,372,036,854,775,807 |
unsigned long long | 8 bytes | 0 | +18,446,744,073,709,551,615 |
Notice that the minimum value for an unsigned type is always 0. Additionally, signed types have a greater negative range than positive range. This is because 0 is considered a positive number.
Values in the table are for 64-bit CPUs.
*Types are signed unless marked otherwise. *