모두CBT

다음 C 프로그램의 실행 결과로 옳은 것은?#include <st… | [계리직 컴퓨터일반] 21년 1회차 기출문제 상세 페이지

1[계리직 컴퓨터일반] 21년 1회차
다음 C 프로그램의 실행 결과로 옳은 것은?
#include <stdio.h>

void main(void) {
int a = 1, b = 2, c = 3;
{
int b = 4, c = 5;
a = b;
{
int c;
c = b;
}
printf("%d %d %d\n", a, b, c);
}
}
1
1 2 3
2
1 4 5
3
4 2 3
4
4 4 5
해설

실행 결과는 4 4 5이다.

C에서 블록 안에 같은 이름의 변수를 선언하면 그 블록에서는 바깥 변수가 가려진다(변수의 유효 범위). a는 다시 선언되지 않았으므로 바깥 a가 그대로 쓰인다.

두 번째 블록에서 b=4, c=5가 새로 선언되고 a = b로 바깥 a가 4가 된다. 가장 안쪽 블록의 c = b는 새로 선언한 c에만 대입되고 블록이 끝나면 사라지므로, printf 시점의 값은 a=4, b=4, c=5이다.

  • 1 2 3: 바깥 블록의 초깃값으로, 내부 블록의 선언과 a = b 대입을 반영하지 않았다.
  • 1 4 5: a = b가 바깥 a를 바꾼다는 점을 놓쳤다.
  • 4 2 3: printf가 내부 블록 안에 있어 b·c는 내부에서 선언한 4·5가 출력된다.

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

이어서 풀어보기

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