C examples for Operator:Bit Operator
Use bit as mask
#include <stdio.h> #include <stdbool.h> //C99, defines bool, true, false /* line styles */ #define SOLID 0//from w w w . j ava 2 s. c om #define DOTTED 1 #define DASHED 2 /* primary colors */ #define BLUE 4 #define GREEN 2 #define RED 1 /* mixed colors */ #define BLACK 0 #define YELLOW (RED | GREEN) #define MAGENTA (RED | BLUE) #define CYAN (GREEN | BLUE) #define WHITE (RED | GREEN | BLUE) const char * colors[8] = {"black", "red", "green", "yellow", "blue", "magenta", "cyan", "white"}; struct box_props { bool opaque : 1; // or unsigned int (pre C99) unsigned int fill_color : 3; unsigned int : 4; bool show_border : 1; // or unsigned int (pre C99) unsigned int border_color : 3; unsigned int border_style : 2; unsigned int : 2; }; void show_settings(const struct box_props * pb); int main(void){ struct box_props box = {true, YELLOW , true, GREEN, DASHED}; show_settings(&box); box.opaque = false; box.fill_color = WHITE; box.border_color = MAGENTA; box.border_style = SOLID; show_settings(&box); return 0; } void show_settings(const struct box_props * pb){ printf("Box is %s.\n", pb->opaque == true ? "opaque": "transparent"); printf("The fill color is %s.\n", colors[pb->fill_color]); printf("Border %s.\n",pb->show_border == true ? "shown" : "not shown"); printf("The border color is %s.\n", colors[pb->border_color]); printf ("The border style is "); switch(pb->border_style) { case SOLID : printf("solid.\n"); break; case DOTTED : printf("dotted.\n"); break; case DASHED : printf("dashed.\n"); break; default : printf("unknown type.\n"); } }