コード 1:-
struct emp
{
char a;
double b;
};
int main()
{
struct emp e;
printf("%p %p", (void*)&e.a, (void*)&e.b);
}
私のコンピューターでの出力:-
OO28FF00 0028FF08
char
とのサイズはdouble
それぞれ '1' と '8' であるため、0028FF00
と0028FF08
はそれぞれ '1' と '8' の倍数です。
コード 2:-
struct emp
{
char a;
long double b;
};
int main()
{
struct emp e;
printf("%p %p \n", (void*)&e.a,(void*)&e.b);
}
出力は次のとおりです:-
0028FF00 0028FF04
char
とのサイズはlong double
それぞれ '1' と '12' ですが0028FF04
、'12' の倍数ではありません。
この場合、パディングが適用されないのはなぜですか?