초보자들이 자주 실수하는 부분이나 흥미를 가질만한 주제를 가지고 이 시리즈를 연재할 예정이다. 전체적인 구조가 정해져 있는 것은 아니고 그때그때 생각나는대로 적을 생각이다. 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문이 실행된다.
'C언어' 카테고리의 다른 글
C언어 기초 4. 변수와 자료형 (0) | 2019.08.04 |
---|---|
C언어 기초 3. printf() 함수 (2) | 2019.08.04 |
C언어 기초 2. C언어 코드 맛 보기 (2) | 2019.07.27 |
C언어 기초 1. C언어란 무엇인가? (0) | 2019.07.14 |
C언어 기초 0. content&머리말 (0) | 2019.07.14 |