为了账号安全,请及时绑定邮箱和手机立即绑定

以下程序的运行结果为什么会是7?

以下程序的运行结果为什么会是7?

汪汪一只猫 2022-05-10 19:11:56
struct A{char t:4;char k:4;unsigned short i:8;unsigned long m;}sizeof(A)=?(不考虑边界对齐)
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

char t:4; char类型在内存中占用1个字节,但是它在内存中只占用了4位

char k:4; char类型在内存中占用1个字节,但是它在内存中只占用了4位

所以两个char型只占用了1个字节,

unsigned short i:8; short类型占用2个字节,在结构体中只用了8位,也就是实际在内容空间中使用了1个字节,但是需要1个字节的填充字节

unsigned long m; long类型占用4个字节

最后结果是:sizeof(A)=1+1+1+4=7 不考虑边界

考虑边界应该是8

查看完整回答
反对 回复 2022-05-15
?
DIEA

TA贡献1820条经验 获得超2个赞

C++里:
char,short,各占1个字节
int占2个字节
long占4个字节

对于这个结构体
一共占了1+1+1+4=7个字节
所以sizeof(A)=7

查看完整回答
反对 回复 2022-05-15
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信