모두CBT

다음 C언어 프로그램의 출력 결과는?#include <stdio.… | [국회직 9급 컴퓨터일반] 25년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 25년 1회차
다음 C언어 프로그램의 출력 결과는?
#include <stdio.h>
int x = 5;
void func(int a) {
a += x++;
printf("func: %d\n", a);
}
int main() {
int x = 2;
func(x++);
printf("main: %d\n", x);
return 0;
}
1
func: 7 main: 3
2
func: 7 main: 2
3
func: 8 main: 3
4
func: 8 main: 2
5
func: 8 main: 1
해설

프로그램의 출력은 func: 7, main: 3이다.

main의 지역 변수 x(값 2)가 전역 x(값 5)를 가린다. func(x++)는 후위 증가이므로 2를 전달한 뒤 main의 x가 3이 된다.

func 안의 x는 전역 x이다. a += x++에서 a는 2+5=7이 되고 그 뒤 전역 x가 6이 되므로 func: 7이 출력되며, 이어서 main의 지역 x를 출력해 main: 3이 나온다.

  • func: 7 main: 2는 인자 전달 뒤 main의 x가 3으로 증가한다는 점을 놓친 결과이다.
  • func: 8 main: 3은 증가 전 값 2가 아니라 증가 후 값 3이 전달된다고 본 결과이다.
  • func: 8 main: 2는 증가된 값을 전달했다고 보면서 main의 x는 그대로라고 본 것이어서 앞뒤가 맞지 않는다.
  • func: 8 main: 1은 x를 감소시키는 연산이 없으므로 나올 수 없다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[국회직 9급 컴퓨터일반] 25년 1회차 20문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요국회직 9급 컴퓨터일반 기출문제 암기장 전체 보기