014 枚举 位段/位域 联合体
/* 目录: 一 枚举 二 位段/位域 三 联合体 */
一 枚举
// 应用 - 协议编号 enum ETest // 整数常量定义 { READ_ONLY = 1, HIDE, SYSTEM, TEST = 15, OK }; int main(int argc, char *argv[]) { printf("%d\n", SYSTEM); printf("%d\n", OK); ETest test = TEST; printf("%d\n", 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\n", data.i); return 0; } /* 0x44332211 */