为什么它的长度是8

来源:百度知道 编辑:UC知道 时间:2024/06/18 23:15:47
struct ABC1 { char a, b; char d; long c; };
最长的是long c,4个字节,总共应是4*3=12个字节呀,为什么教程说是8字节呢
但是struct ABC2 { char a, b; long c; char d; };又是12字节,为什么
没人知道吗

你是问哪个所占空间的字节数啊??要是你定义的结构体变量, 是所有变量加起来的总的字节数, char占一个字节,long 占4个字节,才7个字节

long是4个字节,3个char3个字节,但是后面要补1个字节,以便和long对齐
这样就是8个字节
如果你写成{char a,b;long c;char d;};的话,就是12个字节:a和b一共2个字节,后面2个字节对齐,long 4个字节,c1个字节,后面3个字节对齐
如果写成{long c;char a,b;char d;};的话,也是8个字节

对齐是跟最长的那个对齐的,如果有double类型的成员,那么要补齐8个字节
{char a;double b;cha c;};就要24个字节
{char a;char b;double c;};就是16个字节

对齐不对齐和编译器有关

其实表面上是7个字节
但如果用sizeof来计算的话,就有可能是8了,
这可能看起来觉得不对,但就是这样的
好像它要是4的倍数的,
你们可以自己试试的...

对于你的第二个问题,应该要看你机器里long的大小了

反正结构体大小好像要是4的倍数的,
问过老师,他们也讲不清

char 是1字节

蜡烛每分钟燃烧掉的长度一定,8分钟后,长度是12厘米,18分钟后长度是7厘米。它最初的长度是多少厘米? 为什么纬线圈长度是赤道周长与它度数的cos的乘积? 毫米是长度单位,为什么它用来形容雨量大小呢? ARP分组的长度为什么是固定的? 为什么同样是串行通信,usb线长度最大为5米,而网线比它的速度还快,却可以长达几十米上百米? 为什么马拉松的标准长度是42千米195米? 马拉松赛跑的标准长度为什么是42千米195米 sql2000中 text数据类型的长度为什么只能是16 蜡烛每分钟燃烧掉的长度一定,8分钟后,长度是12厘米,18分钟后长度是7厘米。蜡烛最初的长度是多少厘米? 什么是玻璃钢梯子它的长度是多少