“用C语言写一个函数测试当前机器的大小端模式”是一个经典的笔试题,如下使用两种方式进行解答:
1. 用union来测试机器的大小端
1 #include <stdio.h> 2 3 union test 4 { 5 int a; 6 char b; 7 }; 8 9 int endian_test(void) 10 { 11 union test t1; 12 t1.a = 1; 13 return t1.b; 14 } 15 16 int main(void) 17 { 18 int i = endian_test(); 19 if(i == 1) 20 { 21 printf("is little endian.\n"); 23 } 24 else 25 { 26 printf("is big endian.\n"); 28 } 29 30 printf("i = %d.\n", i); 31 32 return 0; 33 }
2. 用指针测试机器大小端
1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 1; 6 char b = *((char *)&a); 7 8 return 0; 9 }
注: 通信系统中,通信双方数据传送方式中,先发低字节的方式叫小端,先发高字节的方式叫大端。
时间: 2024-10-10 05:43:28