- if처럼 C언어의 몇 가지 구문들은 표현식의 값이 '참'인지, '거짓'인지 반드시 확인해야 함.
ex) if문이 i < j와 같은 표현식을 평가할 때, 이 표현식이 '참'이라면 i가 j보다 값이 작다는 것을 의미함.
- 많은 프로그래밍 언어에서 i < j와 같은 표현식은 '불리언' or '논리'라는 특수한 타입을 갖지만, C에서는 1혹은 0의 결과값이 나타남. (1 : 참, 0 : 거짓)
📌 관계 연산자
- 표는 수학에서 사용되는 <, >, ≤, ≥와 기본적으로 동일하지만, 결과값으로 1 or 0이 나옴.
📌 동등 연산자
- 관계 연산자는 다른 프로그래밍 언어에서 흔히 사용하는 기호를 그대로 사용하지만, 동등 연산자는 좀 특수한 기호를 사용함.
- 관계 연산자처럼 좌향결합적이며, 결과값으로 0 또는 1을 냄. 다만, 관계 연산자보다 평가 순서가 낮음.
i < j == j < k
(i < j) == (j < k)
- 두 개는 같음.
📌 논리 연산자
- 논리연산자는 and, or, not으로 구성됨.
- ! 연산자는 단항, &&아 ||는 이항임.
- 결과값으로 0 또는 1을 반환함.
- 피연산자들은 주로 0이나 1을 갖지만, 필수는 아님.
- 논리연산자는 0이 아닌 피연산자를 참으로, 0인 피연산자를 거짓으로 취급함.
논리연산자는 다음과 같이 행동함.
- !expr: expr의 값이 0이라면 1이다.
- expr1 && expr2: expr1과 expr2가 둘 다 0이 아닌 값이면 1이다.
- expr1 || expr2: expr1 혹은 expr2, 혹은 둘 다 0이 아닌 값이면 1이다.
위에 언급하지 않은 경우엔 전부 0을 값으로 갖는다.
- &&과 ||은 피연산자를 평가할 때 단락방식으로 평가함.
✅ 왼쪽 피연산자를 우선 평가한 다음 오른쪽 피연산자들 평가한다는 뜻.
만약 전체 표현식의 값이 왼쪽 피연산자 하나로 결정날 수 있다면, 오른쪽 피연산자는 평가하지 않음. ❗
예시)
(i != 0) && (j / i > 0)
① (i != 0)
② (j / i > 0)
③ ①&&②
이 경우 &&를 사용하기 때문에 ①, ②가 모두 만족해야 참을 반환함. ①에서 i가 0인 경우 거짓이므로 ② 식을 평가할 필요가 없음.
++)
! 연산자는 단항 덧셈/뺄셈과 같은 순서를 가짐.
💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.
'📚 STUDY > 🔥 C' 카테고리의 다른 글
[5-3] switch문 (1) | 2024.09.05 |
---|---|
[5-2] if문 (3) | 2024.09.05 |
Q&A (pow, fmod, 연산자) (2) | 2024.09.03 |
[4-5] 표현문 (0) | 2024.09.03 |
[4-4] 표현식 평가 (0) | 2024.09.03 |