C语言 测试机器大小端模式的测试代码


#include
union myunion
{
	int a;
	char b;
};
void main()
{
	myunion A;
	A.a=1;
	if(A.b==1)
		printf("small end");
	else
		printf("big end");
}
/*
首先共用体元素a和b在访问时候都是从低地址开始访问的,u1.a = 1在内存中的存放有两种可能(内存地址从左到右递减),小端模式为 00  00 00 01;大端模式为: 01 00 00 00 ,而共用体u1中的b是char类似,所以我们用u1.b去访问时只能读取到最低地址的值(按char去解析时只会读取一个字节),所以,如果读出u1.b的值为1则说明当前机器是小端模式,读出u1.b的值为0,则说明当前机器是大端模式(这种测试方法要记住,面试时候经常考)*/

 

你可能感兴趣的:(C语言 测试机器大小端模式的测试代码)