Проверка на порядок байтов: Почему работает следующий код?

Хотя я понимаю порядок байтов, мне не совсем понятно, как работает приведенный ниже код. Я предполагаю, что этот вопрос не столько о порядке байтов, сколько о том, как работают указатель char * и int, то есть преобразование типов. Кроме того, имело бы значение, если бы переменная слово не было коротким , а просто int ? Спасибо!

#define BIG_ENDIAN 0
#define LITTLE_ENDIAN 1

int byteOrder() {
    short int word = 0x0001;
    char * byte = (char *) &word;
    return (byte[0] ? LITTLE_ENDIAN : BIG_ENDIAN);
}
14
задан OckhamsRazor 3 July 2011 в 18:03
поделиться