책 내용 질문하기
1권 p61, 문제 1번
도서
2020 시나공 정보처리산업기사 실기 [기본서]
페이지
61
조회수
337
작성일
2020-04-23
작성자
탈퇴*원
첨부파일

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

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

라고 되어있는데 실행 결과가

result는 200, b는 201 인것 까지는 이해를 했는데

c는 출력에서 a가 b보다 작지 않을때 299로 나오고 작으면 b만 연산하고 그냥 300으로 나오나요??

 

--c에서 전치연산으로 이미 1을 뺀 상태로 printf으로 넘어오는게 아닌가요??

이게 맞다면 만약 a가 b보다 작지 않으면 실행결과에 c는 299 로 나오고 b는 연산을 안하고 200으로 나오나요? 

답변
2020-04-23 22:15:08

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

 

예, 삼항연산자에서 참, 또는 거짓인 경우 반대 조건일 때의 식은 수행되지 않으므로, 전치 후치가 연산되지 않습니다.

 

때문에 a<b ? b++ : --c 에서 a가 b보다 작다면 --c는 수행되지 않게 되죠.

반대로 a가 b보다 크거나 같다면 b++은 수행되지 않고 --c만 수행되어, b는 기존의 값 200을 그대로 갖고 있게 됩니다.

 

전치, 후치 연산은 해당 식이 반드시 수행이 되어야 적용이 됩니다. 삼항연산자 및 if와 같은 조건문에서 해당 식을 수행하지 않고 넘어가는 경우 전치 및 후치 연산은 적용되지 않습니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-04-23 22:15:08

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

     

    예, 삼항연산자에서 참, 또는 거짓인 경우 반대 조건일 때의 식은 수행되지 않으므로, 전치 후치가 연산되지 않습니다.

     

    때문에 a<b ? b++ : --c 에서 a가 b보다 작다면 --c는 수행되지 않게 되죠.

    반대로 a가 b보다 크거나 같다면 b++은 수행되지 않고 --c만 수행되어, b는 기존의 값 200을 그대로 갖고 있게 됩니다.

     

    전치, 후치 연산은 해당 식이 반드시 수행이 되어야 적용이 됩니다. 삼항연산자 및 if와 같은 조건문에서 해당 식을 수행하지 않고 넘어가는 경우 전치 및 후치 연산은 적용되지 않습니다.

     

    행복한 하루되세요 :)

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