首页 > 编程相关 > 才发现C语言结构体可以直接定义位数据类型

才发现C语言结构体可以直接定义位数据类型

2011年6月19日 sigma 发表评论 阅读评论

今天看Redis源码,看到以下代码,猜着东西是位数据,后来问了下同学确认了下
C语言位数据就是在结构体中,可以定义某个成员所占内存的位数,不过貌似连续几个位数据类型总宽度必须是8的倍数(不知道不是的话编译器会如何处理)
在下面的结构体中,byte占了4位,storage占了2位,encoding占了4位,lru占了22位(总位数为32位)

 typedef struct redisObject {
      unsigned type:4;
      unsigned storage:2; /* REDIS_VM_MEMORY or REDIS_VM_SWAPPING */
      unsigned encoding:4;
      unsigned lru:22;    /* lru time (relative to server.lruclock) */
      int refcount;
      void *ptr;
 } robj;

本文作者: Sigma    在新浪微博关注SigmaSigmaWeibo    RSS订阅本博客
本文链接: http://mblog.sigma.me/2011/06/19/c-struct-bit-type.html
本博客采用知识共享署名—非商业性-禁止演绎使用3.0协议进行许可,转载请保留作者和原文链接。

分类: 编程相关 标签: ,

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

无觅相关文章插件,快速提升流量