class A { int a; short b; int c; char d; }; class B { double a; short b; intc; char d; }; 在32位机器上用gcc编译以上代码,求sizeof(A),sizeof(B)分别是多少( ) A、12 16 B、12 12 C、16 24 D、16 20
时间: 2024-04-12 07:34:10 浏览: 73
long 和 int 的相互转换.docx
sizeof(A) = 12, sizeof(B) = 16
在32位机器上,int类型占4个字节,short类型占2个字节,char类型占1个字节,double类型占8个字节。
对于class A,按照字节对齐规则,a和c都是int类型,占4个字节,b是short类型,占2个字节,d是char类型,占1个字节。因此,sizeof(A) = 4 + 2 + 4 + 1 = 12。
对于class B,按照字节对齐规则,a是double类型,占8个字节,b是short类型,占2个字节,c是int类型,占4个字节,d是char类型,占1个字节。因此,sizeof(B) = 8 + 2 + 4 + 1 = 15。
但是由于对齐规则要求结构体的大小必须是特定对齐单位的倍数(通常是4或8),所以sizeof(B)会被对齐到16个字节。
所以答案是A、12 16。
阅读全文