解释下什么叫位段
#include <stdio.h>
typedef struct
{
int a:2;
int b:2;
int c:1;
}test;
void main()
{
...
...
---------------------------------------------------
int a:2;表示a是一个有符号整型,占有两位,也就是两bit。
int b:2;表示b是一个有符号整型,占有两位,也就是两bit。
int c:1;表示a是一个有符号整型,占有一位,也就是一bit。
升级知识:
注意内存里面是从低位到高位
比如内存是初始为0
XXX0 0000(X表示0或1,不过我们不关心)
低5位,
0 0000 分别是0(c) 00(b) 00(a)
t.a = 1;
XXX0 0001
t.b = 3;
XXX0 1101
t.c = 1;
XXX1 1101
因为高位没初始化,又没定义为unsigned,用%d显示出来的数
a=1
b=-1
c=1或-1
题外话:
2009年一片惨淡迹象,无聊开始写写blog,下文来自一个网友liyuan02的提问
http://topic.csdn.net/u/20070207/22/2a236f12-94b8-4841-b259-9cffd654332a.html
本文使用了guanwl 的一些回答的内容