책 내용 질문하기
실기 기본서 1권 61P 기출따라잡기 문제1 정답 작성 문의
도서
2020 시나공 정보처리산업기사 실기 [기본서]
페이지
61
조회수
230
작성일
2020-06-30
작성자
탈퇴*원
첨부파일

 

#include <stdio . h>

main ()

{

   int result, a = 100, b = 200, c = 300;

   result = a < b ? b++ : --c;

   printf("%d, %d, %d\n", result, b, c);

}

 

다음 문제에 대한 풀이한 결과 result  값이 201이 나왔습니다.

 

저는 답을 하기와 같이 작성을 했습니다.

 

201, 200, 300

 

하지만 해설에는 하기 순서와 같이 되어 있네요

 

200, 201, 300

 

제가 풀이한 답이 잘못된건지, 아님 답안작성시 순서가 상관이 없는건지 알고싶네요

 

답변부탁드립니다

 

 

 

 

답변
2020-07-01 10:33:44

안녕하세요 길벗수험서 운영팀입니다.

 

삼항연산자 a<b ? b++ : --c; 에서 

100<200은 참이므로 b++을 수행하게 됩니다. 

그렇다면 해당 식은 다음과 같이 볼 수 있습니다.

 

result = b++; 

 

즉, result에는 200이 들어간 후, b는 후치증가 연산으로 인해 201이 되며, c는 어떤 연산도 수행되지 않았으므로 초기값인 300이 그대로 있게 되죠.

 

이를 print문에 맞춰 result, b, c 순으로 출력하게 되면, 200, 201, 300이 됩니다.

 

코드에서는 출력 서식을 정확히 준수하여 적어주셔야 합니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-07-01 10:33:44

    안녕하세요 길벗수험서 운영팀입니다.

     

    삼항연산자 a<b ? b++ : --c; 에서 

    100<200은 참이므로 b++을 수행하게 됩니다. 

    그렇다면 해당 식은 다음과 같이 볼 수 있습니다.

     

    result = b++; 

     

    즉, result에는 200이 들어간 후, b는 후치증가 연산으로 인해 201이 되며, c는 어떤 연산도 수행되지 않았으므로 초기값인 300이 그대로 있게 되죠.

     

    이를 print문에 맞춰 result, b, c 순으로 출력하게 되면, 200, 201, 300이 됩니다.

     

    코드에서는 출력 서식을 정확히 준수하여 적어주셔야 합니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.