문제
다음 C 코드의 실행 결과로 가장 적절한 것은?
C#include <stdio.h> int main() { int stack[5] = {0}; int top = -1; stack[++top] = 10; stack[++top] = 20; stack[++top] = 30; printf("%d ", stack[top--]); stack[++top] = 40; printf("%d ", stack[top]); return 0; }
① 30 30 ② 30 40 ③ 20 40 ④ 30 20
정답
2번
해설
스택에 10, 20, 30이 순서대로 push되어 top=2가 된다. 첫 번째 printf에서 stack[2]=30을 출력 후 top이 1로 감소한다. 그 다음 stack[++top]에서 top이 다시 2가 되어 stack[2]=40이 저장되고, 두 번째 printf에서 40이 출력된다. 따라서 출력 결과는 '30 40'이다.