笔试题一道!!

pig1210127 2004-01-31 12:50:21
#pragma pack(3)
struct aa
{
int a;
unsigned char b;
}

sizeof(aa)结果是多少?
/////////////////////////////////////////
struct aa
{
int a;
unsigned char b;
}

sizeof(aa)结果是多少?
...全文
167 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctbt007 2004-07-15
  • 打赏
  • 举报
回复
struct aa
{

unsigned char a;

};
cout<<"sizeof(aa)=="<<sizeof(aa)<<endl;


为什么结果不等于4而等于1?

sizeof(aa)==1
Press any key to continue
netbooting 2004-07-15
  • 打赏
  • 举报
回复
记住是4个4个字节分配内存的就可以想明白了
netbooting 2004-07-15
  • 打赏
  • 举报
回复
struct aa
{
int a;
unsigned char b;
}

在VC下是8
int 占4个字节, 后面还有一个unsigned char,又为它分配4个字节的内存,但它只用了其中的一个字节,其它的三个就空闲了。
如果是:
struct aa
{
int a;
unsigned char b;
unsigned char c;
}

sizeof(aa)还是8
先锋99999 2004-07-15
  • 打赏
  • 举报
回复
主要是考虑4字节对其,所以为8
walkonthesky 2004-07-15
  • 打赏
  • 举报
回复
pragma的参数可以为3????
riitso 2004-07-12
  • 打赏
  • 举报
回复
8
xjp6688 2004-07-12
  • 打赏
  • 举报
回复
这种问题得考率编译环境及操作系统
BigF 2004-07-12
  • 打赏
  • 举报
回复
mark
xiaonian_3654 2004-02-01
  • 打赏
  • 举报
回复
3
fujiji 2004-02-01
  • 打赏
  • 举报
回复
为8吧?
EricZhuo 2004-02-01
  • 打赏
  • 举报
回复
可能是阻止对齐吧
tan_jianhui 2004-02-01
  • 打赏
  • 举报
回复
#pragma pack(3)
struct aa{
int a;
unsigned char b;
}
main(){
printf("%d",sizeof(struct aa));
}
运行打印出:3
pig1210127 2004-01-31
  • 打赏
  • 举报
回复
32位OS
ultralzl 2004-01-31
  • 打赏
  • 举报
回复
这题没什么意思,难道只是考#pragma pack的,要是这样答6和8。
fakefakir 2004-01-31
  • 打赏
  • 举报
回复
#pragma pack 的参数不能为3,至少我用到的编译器都不能这样使用。
gujing01 2004-01-31
  • 打赏
  • 举报
回复
STRUCT 应该会自动补满位数的吧?
纪俊 2004-01-31
  • 打赏
  • 举报
回复
编译器不同可能会有出入
漂流的代码 2004-01-31
  • 打赏
  • 举报
回复
sizeof(aa)=8;
int 为4字节,
为了加快运行速度,
unsigned char 占了4字节的位置,
liquanle 2004-01-31
  • 打赏
  • 举报
回复
我感觉可能会是8。
junnyfeng 2004-01-31
  • 打赏
  • 举报
回复
#pragma pack(3)

是什么意思

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧