zoukankan      html  css  js  c++  java
  • 位域2

    位域类型对齐

    如果相邻的位域字段的类型不同,在不同的位域类型间,按通用的对齐规则进行不同数据类型间的对齐(注意,struct的长度是其内部最宽类型的整数倍)。如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式(不同位域字段存放在不同的位域类型字节中),Dev-C++和GCC都采取压缩方式;

    1、

    struct bs{
        unsigned a:4;
        char b:4 ;
        unsigned c:4;
    }data;
    //占12个字节

    2、

    #include<stdio.h>
    
    typedef unsigned int uint32_t;   
    void inet_ntoa(uint32_t in)    
    {    
        char b[18];    
        register char *p;    
        p = (char *)&in;    
        #define UC(b) (((int)b)&0xff)    
        sprintf(b, "%d.%d.%d.%d\n", UC(p[0]), UC(p[1]), UC(p[2]), UC(p[3]));    
        printf(b);    
    }    
    int main()    
    {    
       inet_ntoa(0x123456aa);  
       inet_ntoa(0xaa654321);   
       return 0;
    }  
    输出
    170.86.52.18
    33.67.101.170

    3、

    #include<stdio.h>
    
    union {
        struct  
        {
            unsigned char a1:2;
            unsigned char a2:3;
            unsigned char a3:3;
        }x;
        unsigned char b;
    }d;
    int main(int argc, char* argv[])
    {
        d.b = 100;
    
        printf("a1:%u\n", d.x.a1);
        printf("a2:%u\n", d.x.a2);
        printf("a3:%u\n", d.x.a3);
    
        return 0;
    } 

    输出:

    0 1 3

  • 相关阅读:
    PHP笔试题
    找工作的几种方式
    ThinkPHP3.2.3学习笔记5---模板(一)
    PHP7新特性
    了解Web Uploader
    什么是云购网
    使用PDO操作数据库的好处
    MySQL与MongoDB的区别
    显示和编辑注解
    自定义验证逻辑
  • 原文地址:https://www.cnblogs.com/zzj2/p/3027006.html
Copyright © 2011-2022 走看看