Хотя я понимаю порядок байтов, мне не совсем понятно, как работает приведенный ниже код. Я предполагаю, что этот вопрос не столько о порядке байтов, сколько о том, как работают указатель 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);
}