본문 바로가기

BackEnd/C

관계연산자와 논리연산자

반응형

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