美文网首页
2019-12-17

2019-12-17

作者: Binbinbins | 来源:发表于2019-12-16 23:48 被阅读0次

C++例题4-10 【位域】
设计一个结构体储存学生的成绩信息,包括成绩(0~10^9),年级分为freshman, sophomore, junior, senior 四种,成绩包括A,B,C,D四个等级。
分析:学号需要27个二进制位,(227>109),而年级和成绩分别需要2个二进制位
如果用整型存储学号(占用4字节),分别用枚举类型存储年级和成绩(各至少1字节),则总共至少占用6字节。如果采用位域,则需要27+2+2=31个二进制位,只需要4个字节就能存下。【1个字节=8个二进制位】

enum Level{freshman, sophomore, junior, senior};
enum Grade{A,B,C,D};
class Student{
private:
   unsigned number:27;
   Level level:2;
   Grade grade:2;
};

占33~64个二进制位时sizeof()都显示为8个字节。

相关文章

网友评论

      本文标题:2019-12-17

      本文链接:https://www.haomeiwen.com/subject/coqynctx.html