All that the C++ standard guarantees is that short <= int <= long <= long long. Therefore, anything that fits into a short, can fit into the other three, and so on. Most 32 bit systems are designed that int and long are both 4 bytes, while long long is of 8 bytes, but again, this isn't guaranteed.