Как работает эта программа, определяющая порядок байтов в компьютере?
Создаётся переменная типа unsigned short int, которая почти во всех современных компиляторах имеет размер 2 байта. Затем ей присваивается значение 1. В случае архитектуры Little Endian, единица запишется в младший байт переменной, а в случае Big Endian - в старший байт. Дальше именно это и проверяется - конструкция *((unsigned char *) &x) получает значение младшего байта переменной. Если там оказался ноль, значит архитектура Big Endian.
Код, делающий то же самое, но проверяющий старший байт:#include <stdio.h>
unsigned short x = 1; /* 0x0001 */
int main(void)
{
  printf("%s\n", *((unsigned char *) &x + 1) == 0 ? "little-endian" : "big-endian");
  return 0;
}
Именно так, как написано. У двухбайтового x берется первый байт. Если он 0 то это BE, т. к. в этом случае первым идет старший байт - 00 01, в LE будет - 01 00.