Тут проявляется выравнивание - данные выравниваются по границам слова (размера типа int). В первом случае переменная с будет располагаться в памяти не непосредственно за переменной b, а будет отодвинута от неё на (sizeof(int) - sizeof(b)) байт. Вот и получается - a - 4 байта, b - один байт, 3 пустых байта - выравнивание, c - 8 байт, сумма - 16.
В остальных случаях - аналогично.
1
|