Почему sizeof информации он не равен sizeof Ваших членов?

У меня есть следующий код:

struct datos
{
    char c;
    int i;
    long l;
};

#define SO(x) #x << " = " << x

int main()
{
    datos d;

    std::cout
        << SO(sizeof(d)) << '\n'
        << SO(sizeof(d.c)) << '\n'
        << SO(sizeof(d.i)) << '\n'
        << SO(sizeof(d.l)) << '\n'
        << SO(sizeof(char) + sizeof(int) + sizeof(long)) << '\n';

    return 0;
}

Что производит следующий вывод:

sizeof(d) = 16
sizeof(d.c) = 1
sizeof(d.i) = 4
sizeof(d.l) = 8
sizeof(char) + sizeof(int) + sizeof(long) = 13

Давно, что я закончил мои исследования первичной, но последний раз, что я это подтвердил складывать один, четыре и восемь, оказывался тринадцатью; но попросив размер datos он возвращает мне шестнадцать, который не сумма одного, четырех и восьми.

Что происходит?

7
задан 25.07.2017, 14:28
0 ответов