BOX-IT/C++

C언어에서 '100< X <200' 은 잘못된 표현이다.

Buang 2022. 4. 10. 14:40
반응형

C 언어에서 100 < X < 200을 표현하고 싶다면

 

(100 < X) && (X < 200)

 

으로 표현해야 한다.

 

왜냐면

C 언어에서 100 < X < 200은

 

100 < X 부터 계산을 해주고,

그다음에 X < 200을 계산하기 때문이다.

 

이게 무슨 문제냐.

 

만약에 X 값이 50이라면

100 < 50은

False니까 0을 반환할 것이다. C언어에서 False는 0을 반환하고 True면 1을 반환하니까.

 

그 후에는 X < 200을 계산해준다.

아까 0이 반환됐으니까

0 < 200이 계산된다.

200은 0보다 큰 게 맞다.

즉 true니까 1이 반환된다.

 

X의 값이 50이 아닌 150이라면 어떻게 될까?

X값이 150이라면

100 < X는

100 < 150이 된다. 150은 100보다 크니까 True다.

True는 c 언어에서 1로 반환하니까 1이 반환된다.

 

X < 200에서 X에 반환된 1을 대입하면

1 < 200이다.

200은 1보다 크다. 즉 True니까 여기서도 결과적으로 1이 반환된다.

 

즉 100 < X < 200에서

X의 값이 100보다 크든 작든 항상 1이 반환되는 거다. 

 

그래서 AND연산자인 &&를 사용해야 한다.

AND연산자는 동시에 두 가지 조건을 만족해야 하는 걸 의미한다.

 

(100 < X) && (X < 200)

 

에선 X가 100보다 크면서 X가 200보다 작아야 함을 뜻한다.

 

반응형