位域

注意空域。unsigned默认是4个字节。

 1 #include <iostream>

 2 

 3 using namespace std;

 4 struct B1{

 5     unsigned a:4;

 6     unsigned b:4;

 7 };

 8 

 9 struct B2{

10     unsigned a:4;

11     unsigned :0;

12     unsigned b:4;

13 };

14 

15 struct B3{

16     unsigned char a:4;

17     unsigned char b:4;

18 };

19 

20 struct B4{

21     unsigned char a:4;

22     unsigned :0;

23     unsigned char b:4;

24 };

25 

26 struct B5{

27     unsigned char a:4;

28     unsigned char b:4;

29     unsigned :0;

30 };

31 

32 struct B6{

33     unsigned char a:4;

34     unsigned char b:5;

35 };

36 int main(int argc, char** argv) {

37     cout << "sizeof(B1): " << sizeof(B1) << endl;

38     cout << "sizeof(B2): " << sizeof(B2) << endl;

39     cout << "sizeof(B3): " << sizeof(B3) << endl;

40     cout << "sizeof(B4): " << sizeof(B4) << endl;

41     cout << "sizeof(B5): " << sizeof(B5) << endl;

42     cout << "sizeof(B6): " << sizeof(B6) << endl;

43     return 0;

44 }

输出:

1 root@xxj-VirtualBox:~/interview# ./bitfield 

2 sizeof(B1): 4

3 sizeof(B2): 8

4 sizeof(B3): 1

5 sizeof(B4): 5

6 sizeof(B5): 4

7 sizeof(B6): 2

 

你可能感兴趣的:(位域)