관계식과 불리언 식
3 < 2 < 1은 수학에서 거짓입니다. C에서는 어떨까?
관계식
견주어서 참이나 거짓을 냅니다
두 값을 견주는 식이 관계식(relational expression)입니다. >, ==, != 같은 관계 연산자를 쓰고, 결과는 참 아니면 거짓입니다. 이 참과 거짓을 불리언(Boolean) 값이라고 합니다.
==는 같다, !=는 같지 않다는 뜻입니다. a가 5, b가 3이라는 값은 예시입니다.
언어마다 다른 기호
'같지 않다'만 여섯 가지
관계 연산자의 기호는 언어마다 조금씩 다릅니다. '같지 않다' 하나만 해도 언어에 따라 이렇게 여러 가지로 씁니다.
변환 없이 견주기
==와 ===는 다릅니다
JavaScript와 PHP의 ==는 두 값의 타입이 다르면 강제 변환을 한 뒤에 견줍니다. ===와 !==는 변환하지 않고 견줍니다. 그래서 글자 "7"과 수 7은 ==로는 같고 ===로는 다릅니다.
예시입니다. 강제 변환은 6편에서 본, 언어가 자동으로 해 주는 타입 변환입니다.
불리언 식
참과 거짓으로 다시 계산합니다
피연산자도 불리언이고 결과도 불리언인 식이 불리언 식(Boolean expression)입니다. &&(그리고), ||(또는) 같은 연산자를 씁니다. C89에는 불리언 타입이 없어 정수로 대신합니다. 0은 거짓, 0이 아닌 수는 참입니다.
C89는 C 언어의 한 판(버전)입니다. a와 b의 값은 예시입니다.
C의 a < b < c
거짓이어야 할 식이 참
C는 왼쪽 <부터 계산합니다. 3 < 2는 거짓이라 0이 되고, 그 0을 1과 견주니 0 < 1은 참입니다. 문법으로는 맞는 식인데 기대와 다른 답이 나옵니다.
C는 연속 비교를 왼쪽부터 하나씩 계산합니다. 2편에서 본 결합 규칙입니다. a, b, c가 3, 2, 1인 경우입니다.
다음 편