Ваша платформа хранит менее значимые байты числа при меньших адресах памяти и более значимые байты при старших адресах памяти. Такие платформы называются little-endian платформы.
Однако, когда вы печатаете число, сначала печатаются более значимые цифры, а позже печатаются менее значимые (именно так работает наша повседневная цифровая запись). По этой причине результат выглядит «обращенным» по сравнению с тем, как он хранится в памяти на платформе с прямым порядком байтов.
Если вы компилируете и запускаете одну и ту же программу на платформе big-endian , результат должен быть 4142
(предполагается, что платформа с 2-байтовым short
).
P.S. Можно утверждать, что «проблема» в этом случае - это «странность» наших повседневных числовых обозначений: мы пишем числа так, чтобы значение их цифр увеличивалось в направлении справа налево. Это кажется противоречивым в контексте обществ, которые пишут и читают в направлении слева направо. Другими словами, это не обратная память. Это способ, которым мы пишем числа, которые перевернуты.