Если мы предположим, что значение short равно 2 байтам, то структура памяти выглядит так на большой машине с прямым порядком байтов:
MSB LSB
-------------------
| 0x0 | 0x1 |
-------------------
И так на маленькой машине с прямым порядком байтов
MSB LSB
-------------------
| 0x1 | 0x0 |
-------------------
Таким образом, короткий 0x0001 состоит из 2 байтов, один со значением 0, другой со значением 1. На старшем байтовом компьютере наименее значимый байт (здесь 0x1) хранится в младшем адресе памяти этого короткогостарший байт хранится в старшем адресе.На машине с прямым порядком байтов все наоборот.
Итак, char *byte = (char *) &word;
получает адрес word
и интерпретирует его как символ *.Предполагая, что символ равен 8 битам, теперь у нас есть указатель на наименее значимый байт нашего короткого замыкания.Если это 0x1, машина с прямым порядком байтов, как показано на диаграмме выше.Если он равен 0, то это немного порядковый номер машины.
(обратите внимание, что этот способ проверки на порядковый номер не может быть переносимым - например, есть машины, где символ имеет такой же размер, как и short, и многие другие более или менее).эзотерические ошибки с таким подходом)