014 枚举 位段/位域 联合体

/*
目录:
   一 枚举
   二 位段/位域
   三 联合体
*/

一 枚举

// 应用 - 协议编号
enum ETest    // 整数常量定义
{

    READ_ONLY = 1,
    HIDE,
    SYSTEM,
    TEST = 15,
    OK
};

int main(int argc, char *argv[])
{
    printf("%d
", SYSTEM);
    printf("%d
", OK);

    ETest test = TEST;
    printf("%d
", TEST);

    return 0;
}
/*
3
16
15
*/


二 位段/位域


typedef unsigned long long int INT;

struct SData
{
    INT nYear : 58;
    INT nMonth : 4;    // 0 - 12
    INT nDay : 5;    // 0 - 31
    INT nHour : 5;    // 0 - 24
    INT nMin : 6;    // 0 - 60
    INT nSec : 6;    // 0 - 60
};

int main(int argc, char *argv[])
{
    SData data = { 2019, 9, 14, 18, 18, 10 };
    printf("%lld/%lld/%lld %lld:%lld:%lld", data.nYear, data.nMonth, data.nDay,
        data.nHour, data.nMin, data.nSec);

    return 0;
}

/*
2019/9/14 18:18:10
*/


三 联合体

union UData
{
    int i;
    char c[4];
};

int main(int argc, char *argv[])
{
    UData data;
    data.c[0] = 0x11;
    data.c[1] = 0x22;
    data.c[2] = 0x33;
    data.c[3] = 0x44;

    printf("0x%x
", data.i);

    return 0;
}
/*
0x44332211
*/
原文地址:https://www.cnblogs.com/huafan/p/11519762.html