-4

考虑一个 8 位编译器,比如 Turbo C,其中我们有一个整数大小,比如 2 个字,即 16 位或 2 个字节。我需要存储三个整数值。

整数 1 | 0-3 | 2位(二进制00-11)

整数 2 | 0-5 | 3位(二进制000-101)

伊内格 3 | 0-7 | 3位(二进制000-111)

总的来说,我们只需要 8 位来存储所有这三个值。这意味着整数数据类型的单个变量有足够的内存来容纳这些值。我需要开发一个程序,该程序最多只能使用两个整数数据类型实例,第一个用于从标准输入设备(例如键盘)扫描值,第二个用于存储用户在表单中输入的数据如上所述的三个整数变量,并通过从存储数据的第二个实例中检索它来打印它们。

4

1 回答 1

2

使用位域:

union X{
  byte byteval;
  struct {
    byte piece1:3;
    byte piece2:3;
    byte piece3:2;
  } pieces;
};

那么你有透明的访问权限:

X a;
a.pieces.piece2=3;
a.byteval;

并且不必左右移动......把它留给编译器;)

于 2013-07-18T18:32:16.567 回答