C语言联合体示例:判断大端和小端字节序
C语言联合体示例:判断大端和小端字节序
这段代码通过联合体的方式将一个16位的整数拆分为两个8位的字符,然后再将这两个字符重新组合成一个整数并打印出来。
#include<stdio.h>
int main(int argc, char const *argv[])
{
union{
short i;
char a[2];
}u;
u.a[0] = 0x11;
u.a[1] = 0x22;
printf('0x%x\n', u.i);
return 0;
}
对于字节序(即大端和小端),可以通过判断联合体中的第一个字符的值来确定。
- 如果第一个字符的值为0x11,而第二个字符的值为0x22,则说明低位字节存储在低地址,即小端字节序。
- 如果第一个字符的值为0x22,而第二个字符的值为0x11,则说明低位字节存储在高地址,即大端字节序。
根据代码中的赋值语句 u.a[0] = 0x11; u.a[1] = 0x22; 可以得出结论,该系统是小端字节序。
原文地址: https://www.cveoy.top/t/topic/qirM 著作权归作者所有。请勿转载和采集!