位域结构体
有时候,信息存储的时候,并不需要一个完整的字节,而只需占几个或一个二进制位就能满足需求。例如存放一个bool类型的变量,只需要true或者false即可,这种情况下,只需要0或者1一位二进制位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
格式:
1 | struct _net_pro_cdu |
注意:
- 无位域名的位域不能使用,仅用来填充、调整尾置(如第四行)
- 位大小不能超过定义用的类型(如上述例子位数不能超过8)
volatile关键字
声明一个变量是易变的,可以防止编译器对程序一些变量运算的过度优化。
for循环执行顺序
1 | for(int i =0; i<5;i++){ |
执行顺序解抛
执行的顺序如下:
第一步 : i=0 初始化值
第二步 : i<5 进行条件判断,如果为真,则继续执行
第三步 : 执行循环体的内容
第四步 : i++ 变量i自增
第五步 : 回到第二步,条件判断为真,则执行循环体内容,再到i++一直循环,
直到第二步的判断条件为假,则退出该循环
原文链接:https://blog.csdn.net/weixin_44080187/article/details/123429045
union类型
长度问题
实例化为变量后,这个变量的长度是这个union中最长的数据类型的长度
1 | union DEMO{ |
数据访问
对于union成员,地址相同,存储有点像并列一样的存储(?我是这么理解的),一个成员变化一定会影响其他成员