1

次の場合、56バイトを取得しています。誰がそれがどのように説明できますか?

#include <stdio.h>

typedef struct how_many_bytes {
    long s[4];
    char c, e;
    int i[2];
    char *d;    
} How_Many_Bytes;

int main(){    
    printf("%lu ", sizeof(How_Many_Bytes));
}

(4*8) + 1 + 1 + 2(パディング用) + 4 + 4 + 8 = 52 バイトではないでしょうか

4

2 に答える 2

3

これは 64 ビット マシンであるため、計算6の代わりにパディングが使用2されます。

また、 を使用%zuして印刷する必要がありますsize_t

于 2013-10-09T03:05:30.270 に答える