7.8 연습문제: 자료형 크기 구하기

다음 소스 코드를 완성하여 14가 출력되게 만드세요.

practice_integer_sizeof.c

#include <stdio.h>

int main()
{
    ___________ num1;
    ___________ num2;

    printf("%d\n", sizeof(num1) + sizeof(num2) + sizeof(int));

    return 0;
}

실행 결과

14

정답

 short
 long long
또는
 unsigned short
 unsigned long long

해설

sizeof 연산자로 변수의 자료형과 크기를 구한 뒤 모두 더하여 14가 나왔습니다. 먼저 int의 크기는 4바이트이므로 남은 값은 10입니다.

C 언어의 정수 자료형 크기가 1, 2, 4, 8바이트 이므로 변수 두 개를 더해서 10이 되려면 2 + 8 또는 8 + 2 조합밖에 없습니다. 따라서 shortlong long 또는 unsigned shortunsigned long long으로 변수를 선언해주면 됩니다. 여기서 부호는 자료형의 크기에 영향을 주지 않으므로 어떻게 하든 결과는 같습니다.