大小为 0 的位域将导致 b 开始于下一个存储单元,这样 a 和 b 就不会在同一个字节中。需要注意的是,大小为 0 的位域不能有名称,因为它们实际上不存储任何信息。
6.4.4 zero-field.c
#include<stdio.h>// struct bits // total: 9 bits// {// // unsigned a : 1;// // unsigned b : 3;// // unsigned c : 5;// int a : 1;// int b : 3;// int c : 29;// };struct bits{unsigned a : 4;unsigned : 0;unsigned b : 4;};intmain(){printf("Sizeof bits_var is: %lu",sizeof(struct bits));}/* ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ 输出:Sizeof bits_var is: 8 │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ */