#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
제가 풀이한 답이 잘못된건지, 아님 답안작성시 순서가 상관이 없는건지 알고싶네요
답변부탁드립니다
안녕하세요 길벗수험서 운영팀입니다.
삼항연산자 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이 됩니다.
코드에서는 출력 서식을 정확히 준수하여 적어주셔야 합니다.
행복한 하루되세요 :)