Skip to content

문제 5 · static_cast와 문자 산술

문제 5 [2점]

아래 코드를 읽고, 출력을 예상하여 작성하세요.

cpp
double x = static_cast<double>(3 / 6);
double y = x *= 2;
cout << static_cast<char>('a' + ++y) << '\"'
    << static_cast<char>('a' + x++) << '\"';
풀이 및 해설

변수의 초기값부터 정확히 잡는 것이 관건입니다.

  • 3 / 6정수 나눗셈이라 0. 그 뒤 static_cast<double>을 해도 이미 0이므로 x = 0.0. (형변환은 나눗셈이 끝난 다음에 적용됨에 주의)
  • x *= 2x = 0.0 * 2 = 0.0이고, 그 대입식의 값이 y에 들어가 y = 0.0.

이제 출력식을 왼쪽에서 오른쪽으로 계산합니다.

  1. ++y전위 증가pre-incrementy를 먼저 1.0으로 만든 뒤 그 값을 사용 → 'a' + 1.0 = 97 + 1 = 98static_cast<char>(98) = b
  2. '\"' → 큰따옴표 문자 "
  3. x++후위 증가라 현재 값 0.0을 먼저 사용하고 x1.0이 됨 → 'a' + 0.0 = 97static_cast<char>(97) = a
  4. '\"' → 큰따옴표 문자 "

이어 붙이면 출력은 b"a" 입니다. (줄바꿈 없음)

b"a"

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

PDF