Размер типа long в 64-битной системе составляет 4 байта для обеспечения обратной совместимости. 1 Windows была создана на 16-разрядной платформе, где sizeof(long) тоже составлял 4 байта. 1 Microsoft серьёзно относится к обратной совместимости и не хочет изменять этот параметр, чтобы не вызвать проблем с устаревшим кодом. 1
Кроме того, такой подход позволяет избежать нарушения форматов сохранения. 1 Например, если бы тип long расширился с 32-битного значения до 64-битного, 64-битная программа не смогла бы использовать некоторые структуры данных, например, заголовок растрового файла. 1
При этом стоит учитывать, что фактические размеры типов данных могут отличаться в разных реализациях, так как разработчики компиляторов выбирают их самостоятельно, исходя из аппаратных возможностей компьютера. 4