C/C++

[c/c++] 実行時にバイトオーダを調べる

バイトオーダーを考慮してプログラムを組む必要があるときに超お手軽にバイトオーダーを判定する関数の作り方

#include <stdio.h>

int islittle(void)
{
    unsigned i = 1;
    return *((char *)&i);
}

int main(int argc, char const *argv[])
{
    if (islittle())
    {
        printf("little endian\n");
    }
    else
    {
        printf("big endian\n");
    }
}

原理は以下の通りです。
unsignedを4バイトと仮定して1で初期化した場合メモリ上のデータの配置が リトルエンディアンなら