Because it doesn’t have to be. The C++ standard only requires that it is (if memory serves) at least 32 bits wide, and at least as big as int
.
MSVC (and the ABI used by Windows) defines long
to be 32 bits wide, and MingW follows suit because well, the compiler is a lot more useful when it agrees with the host OS