51의 심사문제
, 최 정식님이 작성51의 심사문제에서 답을
short gongbu;
long long nozam;
과 같이 하였는데 실제 코드를 실행시켜보니 총 16바이트의 크기가 나왔습니다.
char 1바이트, short 2바이트, long long 8바이트로 패딩을 고려하여 12바이트가 출력될 것이라 생각했는데 그러지 못한 이유가 궁금합니다.
char 1바이트 short 2바이트 패딩 1바이트 long long 8바이트 순으로
1 + 2 + 1 + 8 = 12바이트로 고려하였습니다!
Re: 51의 심사문제
, 도장_ 관리자님이 작성struct mystruct_A
{
char a;
int b;
char c;
} x;
struct mystruct_B
{
int b;
char a;
} y;
A는 12바이트, B는 8바이트가 출력됩니다.char + short을 조합하면 3바이트이니 패딩되어 4바이트가 된다고 생각하면 안 됩니다.
char도 패딩되어 4바이트
short도 패딩되어 4바이트
합계는 8바이트입니다.
long long은 8바이트이니 합계는 16입니다.
컴파일러에 따라 결과는 달라질 수 있습니다.
보다 자세한 건 표 7-1을 참조하세요.