マシンがリトルエンディアンかビッグエンディアンかを判定するCプログラム


以下に、エンディアンを判定するためのいくつかの方法とそれぞれの方法のコード例を示します。

方法1: ユニオンを使用する方法

#include <stdio.h>
typedef union {
    int i;
    char c[sizeof(int)];
} endian_union;
int main() {
    endian_union u;
    u.i = 1;
    if (u.c[0] == 1) {
        printf("リトルエンディアン\n");
    } else {
        printf("ビッグエンディアン\n");
    }
    return 0;
}

方法2: ポインタを使用する方法

#include <stdio.h>
int main() {
    int i = 1;
    char *c = (char*)&i;
    if (*c == 1) {
        printf("リトルエンディアン\n");
    } else {
        printf("ビッグエンディアン\n");
    }
    return 0;
}

方法3: ビットシフトを使用する方法

#include <stdio.h>
int main() {
    int i = 1;
    int endian = *(char*)&i;
    if (endian == 1) {
        printf("リトルエンディアン\n");
    } else {
        printf("ビッグエンディアン\n");
    }
    return 0;
}

これらの方法は、エンディアンを判定するための一般的な手法です。それぞれの方法は、マシンのエンディアンに基づいて適切なメッセージを出力します。プログラムを実行してエンディアンを判定すると、リトルエンディアンかビッグエンディアンかが表示されます。

このようなCプログラムを使用することで、マシンのエンディアンを判定することができます。