C program to check little vs. big endian

byte, c, endianness

Solution

In short, yes.

Suppose we are on a 32-bit machine.

If it is little endian, the `x` in the memory will be something like:

       higher memory
          ----->
    +----+----+----+----+
    |0x01|0x00|0x00|0x00|
    +----+----+----+----+
    A
    |
   &x

so `(char*)(&x) == 1`, and `*y+48 == '1'`. (48 is the ascii code of '0')

If it is big endian, it will be:

    +----+----+----+----+
    |0x00|0x00|0x00|0x01|
    +----+----+----+----+
    A
    |
   &x

so this one will be `'0'`.

Problem

Possible Duplicate: C Macro definition to determine big endian or little endian machine? ``` int main() { int x = 1; char *y = (char*)&x; printf("%c\n",*y+48); } ``` If it's little endian it will print 1. If it's big endian it will print 0. Is that correct? Or will setting a char* to int x always point to the least significant bit, regardless of endianness?

Original source

Related problems