0
以下の構造体にビットフィールドのビット表現を出力したいとします。しかし、私が内容を印刷するとき、私はちょうど最初のビットフィールドの値を何度も何度も見続けています。私は間違って何をしていますか?Cの構造体に長さ8の複数のビットフィールドを出力する方法
#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");
}
あなたはまさに正しいです!データ構造をunionホスティングに変更した後、 'struct'と' int'はすべて動作します。 – Yos