首页 > 试题广场 >

在32系统下输出的结果为( ...

[单选题]
在32系统下输出的结果为(      )
#include <stdio.h>

#pragma pack(2)
struct Test1
{
int a;
char b;
short c;
int *d;
}A;
#pragma pack()

#pragma pack(4)
struct Test2
{
int *d;
char b;
int a;
short c;
}B;
#pragma pack()

int main()
{
printf("%d,%d\n",sizeof(A),sizeof(B));
return 0;
}


  • 12,16
  • 13,13
  • 16,16
  • 其他几项都不对
VC 中提供了#pragma pack(n)来设定变量以 n 字节对齐方式。n 字节对齐就是说 变量存放的起始地址的偏移量有两种情况: 第一、如果 n 大于等于该变量所占用的字 节数,那么偏移量必须满足默认的对齐方式。 第二、如果 n 小于该变量的类型所占用 的字节数,那么偏移量为 n 的倍数,不用满足默认的对齐方式。—————————————————————— A:4+2+2+4 = 12; B:4+4+4+4 = 16
编辑于 2019-01-18 08:23:41 回复(0)