#include"iostream.h"
class Myclass
{
double a;
int x,y;
char b;
};
void main()
{
cout<<sizeof(Myclass)<<endl;
}
我认为是8+4+4+1+3=20;但结果却是24;#include<iostream.h>
class Myclass
{
int a,b,c,d;
char k;

};
void main()
{
cout<<sizeof(Myclass)<<endl;
}
那为什么结果又是20?Help me!!

解决方案 »

  1.   

    你可以通过Project->Setttings->c/c++->Code Generatioin设置struct member alignment设置多少字节对齐!
    而且我建议你不要太在意这些,因为各个编译器的执行结果都是不一样的!
      

  2.   

    #pragma pack(1)
    class Myclass
    {
    double a;
    int x,y;
    char b;
    };
    #pragma pack()
      

  3.   

    1
    这里最长变量类型是double所以以8为单位a=8<=8*1       =8
    x+y=8<=8*1  =8
    b=1<=8*1    =8
    总计242
    这里最长变量类型是int所以以4为单位
     a+b+c+d=16<=4*4;    =16 k=1<=4*1            =4
    总计20