借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式
生活随笔
收集整理的這篇文章主要介紹了
借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方式一: 借助聯合體union的特性實現(聯合體類型數據所占的內存空間等于其最大的成員所占的空間,對聯合體內部所有成員的存取都是相對于該聯合體基地址的偏移量為 0 處開始,也就都是從該聯合體所占內存的首地址位置開始。)
#include <stdio.h> int main() {union{int a; //4 byteschar b; //1 byte} data;data.a = 1; //占4 bytes,十六進制可表示為 0x 00 00 00 01//b因為是char型只占1Byte,a因為是int型占4Byte//所以,在聯合體data所占內存中,b所占內存等于a所占內存的低地址部分 if(1 == data.b){ //走該case說明a的低字節,被取給到了b,即a的低字節存在了聯合體所占內存的(起始)低地址,符合小端模式特征printf("Little_Endian\n");} else {printf("Big_Endian\n");}return 0; }說明:
賦值 1 是數據的低字節位(0x00000001)。
如果 1 被存儲在 data所占內存 的低地址中,那data.b 的值將會是 1,就是小端模式。
如果 1 被存儲在 data所占內存 的高地址中,那data.b 的值將會是 0,就是大端模式。
總結
以上是生活随笔為你收集整理的借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言指针是什么?1分钟彻底理解C语言指
- 下一篇: 用GDB查看大小端