본문 바로가기
C언어

C언어 // 알아두면 쓸모 있는 지식 1. 조건문에서 범위 나타내기

by algosketch 2019. 7. 27.

 초보자들이 자주 실수하는 부분이나 흥미를 가질만한 주제를 가지고 이 시리즈를 연재할 예정이다. 전체적인 구조가 정해져 있는 것은 아니고 그때그때 생각나는대로 적을 생각이다. C언어 기초 시리즈와는 별개로 진행된다.

 첫 번째로 우리가 하고자 하는 것은 if같은 조건문 안에서 변수 v의 범위를 a < v < b 이런 식으로 정하고 싶을 때 어떻게 해야하는가? 가장 먼저 다음과 같은 코드를 떠올릴 것이다.

if (a < v < b)

 이 코드는 우연히 원하는 결과를 얻어낼 수 있을 지 몰라도 절대로 맞는 코드가 아니다. 항상 원하는 결과를 얻기 위해서는 다음과 같이 짜야 한다.

if (a < v && v < b)

 그렇다면 a < v < b는 왜 틀리며 그럼에도 에러가 뜨지 않는 이유는 무엇인가? 편의를 위해 a = 2, v = 1, b = 5로 가정하겠다. 한 눈에 봐도 if문이 실행되지 않을 것이라 예상되는 값이다. 하지만 if문은 실행된다. 이 코드는 다음과 같이 실행된다.

 a < v < b 에서 a < v가 계산되고 2 < 1 는 거짓이므로 거짓 값인 0을 반환한다. 그리고 식이 0 < 5로 바뀐다. 이 식은 참이므로 참 값인 1을 반환하고 조건이 참이므로 if문이 실행된다.