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

  • 相关阅读:
    VBA代码分行
    Excel VBA 操作 Word(入门篇)
    Excel公式与函数——每天学一个
    VBA二次学习笔记(1)——文件操作
    架构探险——学到的知识
    架构探险——搭建框架
    文件下载
    文件上传
    jdbc中的细节
    json
  • 原文地址:https://www.cnblogs.com/zzj2/p/3027006.html
Copyright © 2011-2022 走看看