测试机器的大端还是小端

欢迎访问个人小站,阅读此文http://www.yandong.org/archives/375

#include<stdio.h>

void test1()
{
	short int x;
	char x0, x1;
	x = 0x1122;
	x0 = ((char*)&x)[0];//低地址
	x1 = ((char*)&x)[1];//高地址
	if(0x11 == x0)
	{
		printf("big endian\n");
	}else
	{
		printf("little endian\n");
	}
}

void test2()
{
	union aword
	{
		unsigned int a;
		char b[4];
	} c;

	c.a=1;
	if(0==c.b[0])
	{
		printf("big endian\n");
	}else
	{
		printf("little endian\n");
	}
}

void test3()
{
		union aword
	{
		int a;
		char b[4];
	} c;

	c.a=0x12345678;
	if(0x12==c.b[0])
	{
		printf("big endian\n");
	}else
	{
		printf("little endian\n");
	}
}
void test4()
{
	int a=0x12345678;
	unsigned char *p = (unsigned char *)&a;
	if(0x12==*p)
	{
		printf("big endian\n");
	}else
	{
		printf("little endian\n");
	}
}

int main()
{
	test1();
	test2();
	test3();
	test4();
	return 1;
}

你可能感兴趣的:(c,Little,big,endian,endian,endian)