ビットフィールドは C の概念ですか、それとも C++ ですか?
構造内でのみ使用できますか? それらを使用できる他の場所は何ですか?
私の知る限り、ビットフィールドは、指定された数だけメモリを占有する特別な構造変数です。ビットの。メモリを節約するのに役立ちますが、他には何もありません。私は正しいですか?
ビットフィールドの使用法を理解するために小さなプログラムをコーディングしましたが、期待どおりに動作していないと思います。以下の構造体のサイズは 1+4+2 = 7 バイトであると予想しています (私のマシンでは unsigned int のサイズが 4 バイトであることを考慮すると)、しかし驚いたことに、12 バイトであることが判明しました (4+4+4 )。誰でも理由を教えてもらえますか?
#include <stdio.h>
struct s{
unsigned int a:1;
unsigned int b;
unsigned int c:2;
};
int main()
{
printf("sizeof struct s = %d bytes \n",sizeof(struct s));
return 0;
}
出力:
sizeof struct s = 12 bytes