79.6 연습문제: 정적 변수 선언하기

다음 소스 코드를 완성하여 2, 4, 8, 16이 각 줄에 출력되게 만드세요.

main.c

#include <stdio.h>

int getPowerOf2()
{
    ____________________

    ____________________

    return num1;
}

int main()
{
    printf("%d\n", getPowerOf2());
    printf("%d\n", getPowerOf2());
    printf("%d\n", getPowerOf2());
    printf("%d\n", getPowerOf2());

    return 0;
}

실행 결과

2
4
8
16

정답

 static int num1 = 1;
 num1 *= 2;

해설

함수 getPowerOf2를 호출할 때마다 반환값이 달라지고 있습니다. 실행 결과를 보면 값이 2배씩 증가하는 것을 볼 수 있습니다. 따라서 getPowerOf2 안의 변수 num1을 정적 변수로 선언하고 1을 할당한 뒤 2를 곱해서 저장해주면 값이 계속 유지되므로 2 4 8 16를 출력할 수 있습니다.