まず、構造体のバイトパディングを理解しています。しかし、私はまだ構造体に二重フィールドを含む小さなテストを持っており、これを説明する方法がわかりません:
typedef struct {
char a;
double b;
}data;
typedef struct{
char a;
int b;
}single;
int main(){
printf("%d\n",sizeof(double));
printf("%d\n",sizeof(single));
printf("%d\n",sizeof(data));
}
このテスト全体を通して、答えは:8
8
と16
です。
なぜこの結果は私に考えさせますか?
2番目のテストでは、私のマシンのワードのサイズが4バイトであることがわかります。
最初のテストでは、doubleのサイズが8バイトであることがわかります。
したがって、構造体ではdata
、結果は12バイトになります。charの場合は4バイト、doubleの場合は8バイトになります。
しかし、なぜ結果が16バイトになるのかわかりません。(私にはとても奇妙です)
説明してください、ありがとう:)