문제 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을 내놓고x는2가 됨y++는-1을 내놓고y는0이 됨- 조건식 값 =
1 + (-1) = 0
case 2, case 1 어디에도 해당하지 않으므로 default 가 실행됩니다.
default: z = y < -1 ? 1 : -1; 에서 현재 y는 0이고, 0 < -1은 거짓이므로 z = -1.
정리하면 다음과 같습니다.