Skip to content
On this page

利用共同体求本机字节序


标签:linux/basic  

在C语言中,我们可以使用结构体来获取本机的字节序信息。具体来说,我们可以定义一个包含一个整型变量的结构体,并将该变量初始化为1。然后,我们读取结构体中第一个字节的值,如果该值为1,说明本机采用的是小端序;反之,如果该值为0,说明本机采用的是大端序。

c
#include <stdio.h>
int main() {
  union { int i; char c; } u;
  u.i = 1;
  if (u.c == 1)
    printf("Little Endian\n");
  else
    printf("Big Endian\n");
  return 0;
}

在这个代码中,我们将整型变量 i 和字符型变量 c 定义在同一个联合体中,并使用 u.i 和 u.c 分别访问它们。因为 i 和 c 使用的是同一块内存空间,所以当我们将 i 初始化为1后,c 的值也会被更新为1或0,从而得到本机的字节序信息。

Last updated: