国外大气网站设计,马克杯网站开发,wordpress 获取用户id,苏州新区网站制作目录
1.举例#xff1a;
2.深入刨析大端小端的组成#xff1a;
3.判断当前编译环境是大端还是小端的方法
4.以函数的形式来判断当前的编译环境是大端还是小端【就是把判断大端小端的方法放进函数里面来实现#xff0c;得到返回值#xff0c;可以减少main()函数的内存】…目录
1.举例
2.深入刨析大端小端的组成
3.判断当前编译环境是大端还是小端的方法
4.以函数的形式来判断当前的编译环境是大端还是小端【就是把判断大端小端的方法放进函数里面来实现得到返回值可以减少main()函数的内存】 数据在内存中的字节序存储有两种方式一种是大端存储另一种是小端存储。
决定数据在内存中的字节序存储方式的因素是当前编译器的环境【★★★★★】。
小端字节序存储一个数据的低位字节的数据存放在内存的低地址处高位字节的数据存放在内存的高地址处。【小端的数据举例0x7856341212 34 56 78】大端字节序存储一个数据的低位字节的数据存放在内存的高地址处高位地址的数据存放在内存的低地址处。【大端的数据举例0x7856341278 56 34 12】
1.举例
#includestdio.h
int main() {int a 0x11223344;//当前的环境下数据是以小端的形式存放的即0x1122334444 33 22 11;int b 0x21;//小端存放即0x0101 00 00 00;char* p (char*) b;//拿出来的是b的四个字节【这个是先取出对应地址再强制类型转换】中地址较小的那个字节的地址for (int i 0; i 4; i) {printf(%0x\n,*(pi));//%0x输出的是十六进制形式的整型}return 0;
}
运行结果 2.深入刨析大端小端的组成
#includestdio.h
int main() {int a 10005;//a在内存中的存储形式是15 27 00 00【5是个位1是十位7是百位2是千位】//⚠★★★★★这个中的15是指十位是1个位是5与个位的15是F不能混为一谈char* p (char*)a;for (int i 0; i 4; i) {printf(%d\n, *(p i));}//a10005(十进制)2715(十六进制)return 0;
}
运行结果 图示 3.判断当前编译环境是大端还是小端的方法
#includestdio.h
int main() {int a 5;char* p (char*)a;printf(%d\n, *p);//直接看它的第一个字节输出的是什么如果是0说明是大端如果是5说明是小端if (*(char*)a 5) {printf(数据在内存中是以小端形式存放\n);}elseprintf(数据在内存中是以大端形式存放\n);return 0;
}
运行结果 4.以函数的形式来判断当前的编译环境是大端还是小端【就是把判断大端小端的方法放进函数里面来实现得到返回值可以减少main()函数的内存】
#includestdio.h
int if_duan(int a) {//这个里面的形式参数可以设置成任何变量和实际参数不一样也行均不影响return *(char*)a 5;
}
int main() {int a 5;int retif_duan(a);if (ret 1) {printf(数据在当前编译环境下是小端形式存储\n);}elseprintf(数据在当前编译环境下是大端形式存储\n);return 0;
}
运行结果