假设我们使用的是一台32位机器。
如果是little endian, 那么x在内存中是之样排列的
高内存---->+----+----+----+----+|0x01|0x00|0x00|0x00|+----+----+----+----+A|&x
所以 (char*)(*x) == 1
如果是big endian,它将会是这个样子
高内存---->+----+----+----+----+|0x00|0x00|0x00|0x01|+----+----+----+----+A|&x
所以 (char*)(*x) == 0
#include <stdio.h>
#include <stdint.h>int is_big_endian(void)
{union {uint32_t i;char c[4];} e = {0x10000000};return e.c[0];
}int main(void)
{printf("System is %s -endian.\n", is_big_endian() ? "big" : "little");return 0;
}