1. 目的:判断ubuntu操作系统的内存属于大端还是小端存储。
2. 源代码
/*
两种方法判断大小端(处理器取值时的字节序):
1.字符指针
2.联合体
*/
/* 法1 */
#if 1
#include <stdio.h>
int main(void)
{
int word = 0x12345678; // 注意低地址开始第一个元素值不能大于和等于1000,否则为负数。若要不受限制,可设为unsigned int
//1、先拆数
//char a = (char)word; //此语句也输出78,但不能输出其他3字节地址内容。不确定可否行得通
char *str = (char *)&word;
char *str1 = (char *)&word + 1;
char *str2 = (char *)&word + 2;
char *str3 = (char *)&word + 3;
//2、存起来
printf("str=%x\n", *str);
printf("str1=%x\n", *str1);
printf("str2=%x\n", *str2);
printf("str3=%x\n", *str3);
//3、比较
if (*str == 0x78)
printf("little endian\n");
else
printf("big endian\n");
return 0;
}
#else
/* 法二:从网上面试题学到的 */
#include <stdio.h>
int main (void) {
union w {
int a;
char b;
} c;
c.a = 1;
if (c.b == 1)
printf ("little endian\n");
else
printf ("big endian");
return 0;
}
#endif
转载于:https://www.cnblogs.com/KevinWong777/p/6502492.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)