Considering that the following statements return
4, what is the difference between the
long types in C++?
From this reference:
An int was originally intended to be the "natural" word size of the processor. Many modern processors can handle different word sizes with equal ease.
Also, this bit:
On many (but not all) C and C++ implementations, a long is larger than an int. Today's most popular desktop platforms, such as Windows and Linux, run primarily on 32 bit processors and most compilers for these platforms use a 32 bit int which has the same size and representation as a long.
The guarantees the standard gives you go like this:
1 == sizeof(char) <= sizeof(short) <= sizeof (int) <= sizeof(long) <= sizeof(long long)
So it's perfectly valid for
sizeof (int) and
sizeof (long) to be equal, and many platforms choose to go with this approach. You will find some platforms where
int is 32 bits,
long is 64 bits, and
long long is 128 bits, but it seems very common for
sizeof (long) to be 4.
long long is recognized in C from C99 onwards, but was normally implemented as an extension in C++ prior to C++11.)