龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

学点 C 语言(27): 数据类型 - 结构中的 "位字段"(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
2. 用 8 个 Bit 构成一个 unsigned char 数: #include int main(void) { struct Bit { int b8: 1; int b7: 1; int b6: 1; int b5: 1; int b4: 1; int b3: 1; int b2: 1; int b1: 1; } B; unsigned char *p =

  2. 用 8 个 Bit 构成一个 unsigned char 数:

#include 

int main(void)

{

  struct Bit {

    int b8: 1;

    int b7: 1;

    int b6: 1;

    int b5: 1;

    int b4: 1;

    int b3: 1;

    int b2: 1;

    int b1: 1;

  } B;

  

  unsigned char *p = NULL;

  B.b1 = 1; B.b2 = 1; B.b3 = 1; B.b4 = 1; B.b5 = 1; B.b6 = 1; B.b7 = 1; B.b8 = 1;

  p = (unsigned char *)&B;

  printf("%dn", *p); /* 255 */

  B.b1 = 0; B.b2 = 0; B.b3 = 0; B.b4 = 0; B.b5 = 0; B.b6 = 0; B.b7 = 0; B.b8 = 1;

  p = (unsigned char *)&B;

  printf("%dn", *p); /* 1  */

  B.b1 = 0; B.b2 = 0; B.b3 = 0; B.b4 = 0; B.b5 = 1; B.b6 = 1; B.b7 = 1; B.b8 = 1;

  p = (unsigned char *)&B;

  printf("%dn", *p); /* 15 */

  B.b1 = 0; B.b2 = 1; B.b3 = 1; B.b4 = 1; B.b5 = 1; B.b6 = 1; B.b7 = 1; B.b8 = 1;

  p = (unsigned char *)&B;

  printf("%dn", *p); /* 127 */

  getchar();

  return 0;

}

  3. 包含位字段的结构和其他结构没有区别, 譬如同时包含其他类型的字段:

#include 

int main(void)

{

  struct Bit {

    unsigned b1: 1;

    unsigned b2: 1;

    float f;

  } B;

  

  B.b1 = 0;

  B.b2 = 1;

  B.f = 3.14;

  

  printf("%d, %d, %gn", B.b1, B.b2, B.f); 

  getchar();

  return 0;

}

精彩图集

赞助商链接