The term endian refers to the way a computer architecture stores the bytes of a multi-byte number in memory. If bytes at lower addresses have lower significance (Intel microprocessors, for instance), this is called little endian ordering. Conversely, big endian ordering describes a computer architecture in which the most significant byte has the lowest memory address. The following portable program detects the endian of the machine on which it is executed:
void main() { union probe{ unsigned int num; unsigned char bytes[sizeof(unsigned int)]; }; probe p = { 1U }; //initialize first member of p with unsigned 1 bool little_endian = (p.bytes[0] == 1U); //in a big endian architecture, p.bytes[0] equals 0 }