首页 > 试题广场 >

在64位系统中,有以下的定义:输出结果是?structStu

[单选题]
在64位系统中,下面代码段的输出为()
struct Student {
    int a;
    char b;
    char c;
    long d;
};
int main() {
    printf("%lu", sizeof(struct Student));
}

  • 20
  • 16
  • 12
  • 24
<p>32位是四个字节</p>
发表于 2020-11-03 20:07:56 回复(0)




到结构体内最长的字节类型 long  8  结构体的字节大小一定是8的倍数 进行内存对齐int 4+两char 1 占一个8 剩下位置不够塞long在补一个8 结构体字节大小就为16
另外结构体内有char a[10]; int i;这种 以int的长度4对齐 不是10 数组只是叠加在一起不影响对齐 a[10]分成到三个4字节内存 加上int i 则结构体字节大小为16

发表于 2021-10-17 21:59:13 回复(0)
64位系统里,long是8字节
发表于 2020-08-27 22:25:15 回复(1)
64位系统里,long占8B。分配单位为8B,int为4B、char为1B两个合起来2B,目前已经6B。开始存d,所分配的第一个周期只剩2B不够存d,所以另起一行存d。合起来就是16B。
发表于 2021-12-10 14:10:34 回复(0)
char型各补齐两字节刚好对齐4+2+2+8

编辑于 2021-04-14 17:38:34 回复(0)
发表于 2022-10-18 19:20:07 回复(1)
411(2🈳)8
发表于 2022-04-06 09:04:40 回复(0)
1+1+4+8不是14嘛
编辑于 2021-04-10 15:04:30 回复(2)
long记成4了。。。
发表于 2023-01-18 13:46:14 回复(0)
个人理解:4+1+3+8=16
我是参考这个解析(https://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html)也不知道对不对(手动狗头)
发表于 2021-07-07 21:30:55 回复(1)