Почему размер класса увеличивается, когда int64_t меняется на int32_t

В моем первом примере у меня есть два битовых поля, используяint64_t, Когда я компилирую и получаю размер класса, я получаю 8.

class Test
{
    int64_t first : 40;
    int64_t second : 24;
};

int main()
{
    std::cout << sizeof(Test); // 8
}

Но когда я изменяю второй битфайлд, чтобы бытьint32_t размер класса удваивается до 16:

class Test
{
    int64_t first : 40;
    int32_t second : 24;
};

int main()
{
    std::cout << sizeof(Test); // 16
}

Это происходит как на GCC 5.3.0, так и на MSVC 2015. Но почему?

Ответы на вопрос(4)

Ваш ответ на вопрос