第 15 章 位操作(fields)
程序员文章站
2023-12-22 21:31:46
1 /* 2 fields.c -- 定义并使用字段 3 */ 4 5 #include 6 7 //线的样式 8 #define SOLID 0 9 #define DOTTED 1 10 #define DASHED 2 11 12 //三原色 13 #define BLUE ......
1 /*----------------------------------- 2 fields.c -- 定义并使用字段 3 -----------------------------------*/ 4 5 #include <stdio.h> 6 7 //线的样式 8 #define SOLID 0 9 #define DOTTED 1 10 #define DASHED 2 11 12 //三原色 13 #define BLUE 4 14 #define GREEN 2 15 #define RED 1 16 17 //混合色 18 #define BLACK (BLUE & GREEN & RED) 19 #define YELLOW (RED | GREEN) 20 #define MAGENTA (RED | BLUE) 21 #define CYAN (GREEN | BLUE) 22 #define WHITE (RED | GREEN | BLUE) 23 24 const char *colors[] = 25 { 26 "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white" 27 }; 28 29 struct box_props 30 { 31 unsigned int opaque : 1; 32 unsigned int fill_color : 3; 33 unsigned int : 4; 34 unsigned int show_border : 1; 35 unsigned int border_color : 3; 36 unsigned int border_style : 2; 37 unsigned int : 2; 38 }; 39 40 void show_settings(const struct box_props *pb); 41 42 int main() 43 { 44 //创建并初始化 box_props 结构 45 struct box_props box = {true, YELLOW, true, GREEN, DASHED}; 46 47 printf("Original box settings:\n"); 48 show_settings(&box); 49 50 box.opaque = false; 51 box.fill_color = WHITE; 52 box.border_color = MAGENTA; 53 box.border_style = SOLID; 54 55 printf("\nModified box settings:\n"); 56 show_settings(&box); 57 58 return 0; 59 } 60 61 void show_settings(const struct box_props *pb) 62 { 63 printf("Box is %s.\n", pb->opaque ? "opaque" : "transparent"); 64 65 printf("The fill color is %s.\n", colors[pb->fill_color]); 66 67 printf("Border %s.\n", pb->show_border ? "shown" : "not shown"); 68 69 printf("The border color is %s.\n", colors[pb->border_color]); 70 71 printf("The border style is "); 72 switch (pb->border_style) 73 { 74 case SOLID: 75 printf("solid.\n"); 76 break; 77 78 case DOTTED: 79 printf("dotted.\n"); 80 break; 81 82 case DASHED: 83 printf("dashed.\n"); 84 break; 85 86 default: 87 printf("unknown type.\n"); 88 break; 89 } 90 }
推荐阅读
-
第 15 章 位操作(fields)
-
第8章 ZooKeeper操作
-
第5章 MapReduce操作
-
Excel判断身份证号码数据的第17或15位数字的奇偶性决定男女性别
-
Python Crash Course读书笔记 - 第15章:GENERATING DATA
-
第15章 使用EntityFramework Core进行配置和操作数据
-
下一代无线局域网(802.11n) 第4章 互操作性
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第17章: IO操作深入:课时83:RandomAccessFile
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第23章:反射与类操作:课时105:反射调用构造方法(含关系图-重要)
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第17章: IO操作深入:课时82:管道流