/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Beispielprogramm p04050203.c */ /* aus "C fuer Java-Programmierer", Hanser-Verlag */ /* */ /* Demonstriert wird die Verwendung von Bitfeldern im Zusam- */ /* hang mit Unions. */ /***************************************************************/ #include struct Bitfeld { unsigned int flag0 : 1; unsigned int flag1 : 1; unsigned int flag2 : 1; unsigned int flag3 : 1; unsigned int flag4 : 1; unsigned int flag5 : 1; unsigned int flag6 : 1; unsigned int flag7 : 1; }; union Flags { struct Bitfeld bitfeld; char zahl; } meine_flags; int main(void) { meine_flags.bitfeld.flag0 = meine_flags.bitfeld.flag1 = meine_flags.bitfeld.flag2 = meine_flags.bitfeld.flag3 = 0; meine_flags.bitfeld.flag4 = meine_flags.bitfeld.flag5 = meine_flags.bitfeld.flag6 = meine_flags.bitfeld.flag7 = 1; printf("%u ",meine_flags.bitfeld.flag0); printf("%u ",meine_flags.bitfeld.flag1); printf("%u ",meine_flags.bitfeld.flag2); printf("%u ",meine_flags.bitfeld.flag3); printf("%u ",meine_flags.bitfeld.flag4); printf("%u ",meine_flags.bitfeld.flag5); printf("%u ",meine_flags.bitfeld.flag6); printf("%u\n\n",meine_flags.bitfeld.flag7); meine_flags.zahl = 0x0F; printf("%u ",meine_flags.bitfeld.flag0); printf("%u ",meine_flags.bitfeld.flag1); printf("%u ",meine_flags.bitfeld.flag2); printf("%u ",meine_flags.bitfeld.flag3); printf("%u ",meine_flags.bitfeld.flag4); printf("%u ",meine_flags.bitfeld.flag5); printf("%u ",meine_flags.bitfeld.flag6); printf("%u\n\n",meine_flags.bitfeld.flag7); meine_flags.zahl = 0xF0; printf("%u ",meine_flags.bitfeld.flag0); printf("%u ",meine_flags.bitfeld.flag1); printf("%u ",meine_flags.bitfeld.flag2); printf("%u ",meine_flags.bitfeld.flag3); printf("%u ",meine_flags.bitfeld.flag4); printf("%u ",meine_flags.bitfeld.flag5); printf("%u ",meine_flags.bitfeld.flag6); printf("%u\n\n",meine_flags.bitfeld.flag7); return 0; }