猿问

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

struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
}
sizeof(A)=?(不考虑边界对齐)

汪汪一只猫
浏览 159回答 2
2回答

蓝山帝景

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

DIEA

C++里:char,short,各占1个字节int占2个字节long占4个字节对于这个结构体一共占了1+1+1+4=7个字节所以sizeof(A)=7
随时随地看视频慕课网APP
我要回答