笔试题一道!!

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)结果是多少?
...全文
129 点赞 收藏 20
写回复
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)

是什么意思
回复
发动态
发帖子
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
社区公告
暂无公告