1. 관계연산자(비교 연산자)
관계연산자는 크기 및 동등 관계를 따지는 연산자이다. 즉 두 피연산자의 크기 관계를 따져주는 이
항 연산자이다. 따라서 비교 연산자라고도 한다. 두 피연산자의 값을 비교하기 때문이다.
참이면 1을, 거짓이면 0을 반환한다. 0이외의 모든 값은 참을 의미한다.
2. 논리연산자
논리 연산자 역시 참과 거짓을 따지는 연산자로서 AND(논리곱), OR(논리합), NOT(논리부정)을 의미하는 연산자로서 구성되어 있다.
위 연산자들 모두 연산의 결과로 참 또는 거짓을 반환한다. 그리고 이들 연산결과를 나타낸 표
를 가리켜 진리표라 하는데 아래는 진리표이다.
아래는 논리연산의 예를 보여준다.
두번의 관계연산이 참이되어 1을 반환했다. 그 후 논리연산의 피연산자가 둘 다 1이여서
논리 연산의 결과도 참이되고 1을 반환했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int main(void) { int num1 = 10; int num2 = 12; int result1, result2, result3; result1 = (num1==10 && num2==12); result2 = (num1<=12 || num2>=12); result3 = !num1; printf("result1 : %d \n", result1); printf("result2 : %d \n", result2); printf("result3 : %d \n", result3); return 0; } | cs |
1 2 3 | result1 : 1 result2 : 1 result3 : 0 | cs |
3. 논리연산자와 Short-Circuit Evaluation-가장 빠르게 값을 계산하는 연산
c언어는 연산속도의 향상을 위해 SCE를 적용한다.
위 그림에서 보이듯이 &&연산자의 왼편에 있는 피연산자가 거짓(0)이면 오른편에 있는 피
연산자에 상관없이 연산결과는 거짓이 된다. 따라서 연산속도의 향상을 위해서 오른편은 실
행하지 않는다. 이것이 바로 SCE다. 마찬가지로 || 연산자의 왼편에 있는 피연산자가 참(1)이
면 , 오른편에 있는 피연산자에 상관 없이 || 연산의 결과는 참이 된다. 따라서 이러한 경우에
도 || 연산자의 오른편은 실행되지 않는다. 이러한 특성 때매 A와B의 값이 증가되지 않는다
는것을 알아야 한다. 되도록이면 논리연산자가 사용된 문장에는 가급적 다른 연산자가 오지
않도록 하는것이 좋다.
'BackEnd > C' 카테고리의 다른 글
sizeof 연산자 (0) | 2018.12.18 |
---|---|
자료형 변환 연산자 (0) | 2018.12.10 |
다양한 연산자들의 소개 (0) | 2018.12.10 |
연산자들의 우선순위와 결합방향 (0) | 2018.12.10 |
산술 연산자를 통해서 보는 연산의 원리 (0) | 2018.12.10 |