char和short int

时间:2017-11-21 16:54:57

标签: c++ class padding sizeof

我试图解决一个考试题,问题是A级和B级的大小是什么?

class A {
    char c;
    short s;
    char c2;
    int i;
};
class B {
    int i;
    short s;
    char c, c2;
};

按我说来

sizeof class A:8 (char:1,short:2,char:1,int:4 - No Padding)

B类的大小:8 (int:4,short:2,char:1 + 1 - No Padding)

当我在我的系统中尝试时,我得到的输出与我期望的不同

A类的大小:12

B类的大小:8

当我在课堂上做了一些改变时

class A {
    char c,c2;
    short s;
    //char c2;
    int i;
};
class B {
    int i;
    short s;
    char c, c2;
};

然后输出 sizeof(A):8 sizeof(B):8

有人可以解释一下输出是如何输出的12& 8? 提前致谢

0 个答案:

没有答案