Ich möchte die Bitdarstellung der Bitfelder in der Struktur unten drucken. Wenn ich jedoch den Inhalt drucke, sehe ich immer wieder den Wert des ersten Bitfeldes. Was mache ich falsch?So drucken Sie mehrere Bitfelder der Länge 8 in einer Struktur in C
#include <stdio.h>
#include <limits.h>
typedef struct Bits {
union BitUnion {
unsigned int op1 : 8;
unsigned int op2 : 8;
unsigned int op3 : 8;
unsigned int op4 : 8;
int num;
} BitUnion;
} Bits;
void printBitNum(Bits b);
int main() {
Bits test;
test.BitUnion.op1 = 2;
test.BitUnion.op2 = 5;
test.BitUnion.op3 = 'd';
test.BitUnion.op4 = 10;
printBitNum(test);
return 0;
}
void printBitNum(Bits b) {
int i;
for (i = (CHAR_BIT * sizeof(int)) - 1; i >= 0; i--) {
if (b.BitUnion.num & (1 << i)) {
printf("1");
} else {
printf("0");
}
}
printf("\n");
}
Sie sind genau richtig! Nach dem Ändern der Datenstruktur zu union hosting die 'struct' und' int' funktioniert alles. – Yos