位域中位的顺序
在AIX主机上编译运行以下程序:
1 #include <iostream> 2 3 typedef struct 4 { 5 unsigned int b1 : 1; 6 unsigned int b2 : 1; 7 unsigned int b3 : 1; 8 unsigned int b4 : 1; 9 unsigned int b5 : 1; 10 unsigned int b6 : 1; 11 unsigned int b7 : 1; 12 unsigned int b8 : 1; 13 } bit8; 14 15 typedef union 16 { 17 bit8 bType; 18 char cType; 19 } byte; 20 21 int main( void ) 22 { 23 byte chTest; 24 chTest.cType = '1'; 25 26 std::cout << chTest.bType.b1 << " "; 27 std::cout << chTest.bType.b2 << " "; 28 std::cout << chTest.bType.b3 << " "; 29 std::cout << chTest.bType.b4 << " "; 30 std::cout << chTest.bType.b5 << " "; 31 std::cout << chTest.bType.b6 << " "; 32 std::cout << chTest.bType.b7 << " "; 33 std::cout << chTest.bType.b8 << std::endl; 34 35 return 0; 36 }
运行结果为:
0 0 1 1 0 0 0 1
但是同样的程序,在 Linux 主机上的运行结果却为:
1 0 0 0 1 1 0 0
位域也分大端序和小端序的吗?
位域的类型使用 int 而不是 unsigned int 的时候,Linux主机输出的是 -1 而不是 1