“用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 }
注: 通信系統中,通信雙方數據傳送方式中,先發低字節的方式叫小端,先發高字節的方式叫大端。
