integer in C++

Type | Storage size | Value range
--- | --- | --- 
short | 2 bytes | -2<sup>15</sup> to 2<sup>15</sup>-1
unsigned short | 2 bytes | 0 to 2<sup>16</sup>-1
int | 2 bytes or 4 bytes | -2<sup>15</sup> to 2<sup>15</sup>-1 or -2<sup>31</sup> to 2<sup>31</sup>-1
unsigned int | 2 bytes or 4 bytes | 0 to 2<sup>16</sup>-1 or 0 to 2<sup>32</sup>-1
long | 8 bytes | -2<sup>63</sup> to 2<sup>63</sup>-1
unsigned long | 8 bytes | 0 to 2<sup>64</sup>-1
long long | 8 bytes | -2<sup>63</sup> to 2<sup>63</sup>-1
unsigned long long | 8 bytes | 0 to 2<sup>64</sup>-1

Notes:
* Data type modifiers: 
 * Signed
 * Unsigned
 * Short
 * Long
* Overflow:
 * Signed integer overflow is undefined behavior according to the standard.
 * Unsigned integer ends up back at zero when overflowed.

```
#include <iostream>
using namespace std;

int main()
{
    short s = -1; cout<<s<<endl;
    unsigned short us = 1; cout<<us<<endl;
    int i = -1; cout<<i<<endl;
    unsigned int ui = 1; cout<<ui<<endl;
    long l = -1; cout<<l<<endl;
    unsigned long ul = 1; cout<<ul<<endl;
    long long ll = -1; cout<<ll<<endl;
    unsigned long long ull = 1; cout<<ull<<endl;
    return 0;
}
```
Outputs:
```
-1
1
-1
1
-1
1
-1
1
```