long:在32位系统中占4字节,在64位系统中占8字节。
#pragma pack (n) 可以指定对齐的字节数
struct对齐规则:
1)类型本省的对齐数和pack指定的对齐数中较小的
2)struct整体的对齐数为所有类型中对齐数最大的
#include <stdio.h>
#pragma pack (2)
typedef struct {
char a;
int b;
long c;
} T;
int main() {
T t[2];
printf("sizeof long: %ld\n", sizeof(long));
printf("sizeof T: %ld\n", sizeof(T));
printf("size: %ld\n", &(t[1].a)-&(t[0].a));
return 0;
}
代码输出:
sizeof long: 8
sizeof T: 14
size: 14