考虑一个8位编译器,例如Turbo C,其中我们有一个大小的整数,比如说2个字,即16位或2个字节。我需要存储三个整数值。
整数1 | 0-3 | 2位(二进制00-11)
整数2 | 0-5 | 3位(二进制000-101)
Inetger 3 | 0-7 | 3位(000-111,二进制)
总的来说,我们只需要8位来存储所有这三个值。这意味着整数数据类型的单个变量具有足够的内存来容纳这些值。我需要 开发一个程序,它可以 - 最多 - 只使用两个整数数据类型的实例,第一个用于从标准输入设备扫描值表示键盘,第二个用于存储用户以三个整数形式输入的数据如上所述的变量,并通过从存储数据的第二个实例中删除它来打印它们。
答案 0 :(得分:2)
使用位域:
union X{
byte byteval;
struct {
byte piece1:3;
byte piece2:3;
byte piece3:2;
} pieces;
};
然后你有透明的访问权限:
X a;
a.pieces.piece2=3;
a.byteval;
并且不必左右移动......将其留给编译器;)