3 < 2 < 1이 참이면 세 수가 오름차순일까?
연속 비교식의 중간 불리언 값과 숫자 변환을 직접 표시하고, 두 비교를 논리곱으로 묶은 식과 대조합니다.
그림에서 무엇을 볼까요?
3 < 2가 거짓이 되고 숫자 0으로 변환되어 0 < 1은 참이 되는 경로와 두 독립 비교의 논리곱은 거짓인 경로
종이에 a < b < c라고 쓰면 보통 a가 b보다 작고 b가 c보다 작다는 뜻으로 읽습니다. 자바스크립트에서는 이 표기를 그대로 옮기면 다른 계산이 됩니다. 3 < 2 < 1은 (3 < 2) < 1로 평가되어 최종 결과가 true, 즉 참입니다. 세 수가 오름차순이라는 결론과는 맞지 않습니다.
작다 비교의 결과는 숫자가 아니라 불리언(Boolean, 참·거짓 값)입니다. 첫 비교 3 < 2는 false입니다. 이어지는 비교는 원래 두 번째 수 2와 세 번째 수 1을 비교하는 것이 아니라, 방금 얻은 false와 1을 비교합니다. 결과 사이에 어떤 값이 전달되는지 추적해야 합니다.
함께 확인할 점
3·2·1에서 첫 비교 결과 false가 두 번째 단계의 어느 숫자가 되는지 읽습니다. 1·2·3과 0·0·1을 차례로 선택해 두 식이 같은 결과인지 비교합니다. 마지막 수만 0과 -1로 바꾸고, 최종 참·거짓을 예상한 뒤 결과와 대조하고 초기화합니다.
생각해 볼 질문
‘실행 결과가 참이므로 오름차순이다’라는 보고를 입력·중간 자료형·의도한 조건이 드러나게 고쳐 쓰세요.
