Skip to content

문제 9 · switch 문과 후위 증가

문제 9 [2점]

아래 코드의 x, y, z는 어떤 값을 갖는지 쓰시오.

cpp
int x = 1, y = -1, z;
switch (x++ + y++) {
    case 2: z = x == 2 ? 1 : -1; break;
    case 1: z = (x * y) > 0 ? 1 : -1; break;
    default: z = y < -1 ? 1 : -1;
}
풀이 및 해설

먼저 switch의 조건식을 평가합니다. 두 후위 증가는 현재 값으로 계산에 참여합니다.

  • x++1을 내놓고 x2가 됨
  • y++-1을 내놓고 y0이 됨
  • 조건식 값 = 1 + (-1) = 0

case 2, case 1 어디에도 해당하지 않으므로 default 가 실행됩니다.

default: z = y < -1 ? 1 : -1; 에서 현재 y0이고, 0 < -1거짓이므로 z = -1.

정리하면 다음과 같습니다.

x=2,y=0,z=1

👉 실습(C++)에서 확인하기

PDF