В то время как я понимаю истинность, я немного не понимаю, как работает код ниже. Я предполагаю, что этот вопрос меньше о endianness и больше о том, как указатель char * и int работают, то есть преобразовывают тип. Кроме того, не имеет значения, если переменная word
не была short
, а просто 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);
}