#include <stdint.h>
#include <stdio.h>
typedef union {
uint64_t u[2];
struct {
uint64_t a:30;
uint64_t b:30;
uint64_t c:30;
uint64_t d:30;
uint64_t e:8;
}x;
} mystruct;
int main()
{
printf("Size %d\n", sizeof(mystruct));
}
64ビットマシンでコンパイルしようとしています。予想される出力は 16 でしたが、24 を取得しています。ここでアライメントが発生したことはわかっていますが、構造体 x が正確に 16 バイトであるため、その理由はわかりません。誰かがこれを説明できますか。ありがとう