논리 연산자는 AND, OR, NOT 이 있습니다.
디지털 논리 게이트를 아신다면 매우 쉬운 개념입니다.
위 논리 게이트들은 결과 값이 1 또는 0 으로 나오며 1을 참(True) 이라 하고 0(False) 을 거짓 이라고 합니다.
NOT 은 C 언어에서 ! 입니다.
OR 은 C 언어에서 || 입니다.
AND 는 C 언어에서 && 입니다.
그래서 변수 에 ! 을 붙이면 논리 값이 반전 됩니다.
|| 로 연산된 값은 둘중 하나만 참이면 참이 되어 결과 값이 1 이 됩니다.
만약 둘다 거짓이라면 결과 값은 0 이 됩니다. ( 더하기와 같아요)
&& 는 둘다 참일 경우만 결과 값이 1 이 됩니다. ( 곱하기와 같아요)
예제 코드를 보겠습니다.
#include <stdio.h>
void main (void)
{
int a,b,c;
a = 3;
b = 0;
c = 2;
printf( "!a = %d \n", !a);
printf( "a+b = %d \n", (a || b));
printf( "a*b = %d \n", (a && b));
printf( "a*c = %d \n", (a && c));
}
이 코드를 실행 시키면 아래와 같은 결과를 출력 합니다.
!a = 0
a+b = 1
a*b = 0
a*c = 1
a 는 분명 3 으로 초기화 했으나 ! 을 붙였더니 0 이 되었습니다.
그 이유는 3 은 0 이 아니므로 논리 적으로 참 즉, 1 이 됩니다.
여기에 ! 을 붙여 논리를 반전 했으니 값은 0 이 됩니다.
a || b 는 a+b 의 논리와 같으며, a=3 이므로 참(1) 이고, b=0 이므로 거짓(0) 입니다.
따라서 a || b = 참 (1 ) 이 됩니다.
또 a * b 는 참(1) 과 거짓(0) 의 곱이므로 거짓(0) 이 되고,
a * b 는 참(1) 과 참(1) 의 곱이므로 참(1) 이 나옵니다.
원리를 알고 보면 매우 간단 합니다.
참고로 참 과 거짓은 변수의 값이 0 이냐 아니냐에 따라 결정 됩니다.
처음 프로그래밍 언어를 배우시는 경우 참을 0보다 큰수 로 생각 하는 경우가 있는데요.
-2 도 참입니다. 0 이 아니면 무조건 참 입니다.
따라서 아래 코드도 결과는 같습니다.
#include <stdio.h>
void main (void)
{
int a,b,c;
a = -3;
b = 0;
c = -2;
printf( "!a = %d \n", !a);
printf( "a+b = %d \n", (a || b));
printf( "a*b = %d \n", (a && b));
printf( "a*c = %d \n", (a && c));
}
그리고 ' | ' 와 ' || ' 는 비슷 하지만 엄연히 다르며, 마찬가지로 ' & ' 와 ' && ' 도 다릅니다.
이 것들은 비트 연산에서 자세히 다루겠습니다.
'코딩을 합시다 > 최대한 쉽게 설명한 C 언어' 카테고리의 다른 글
초등학생도 이해하는 C 언어 - 비트연산자 (0) | 2020.05.22 |
---|---|
초등학생도 이해하는 C 언어 - 조건 연산자 (삼항 연산자) (0) | 2020.05.07 |
초등학생도 이해하는 C 언어 - 관계 연산자 (0) | 2020.05.07 |
초등학생도 이해하는 C 언어 - 증감 연산자 (0) | 2020.05.07 |
초등학생도 이해하는 C 언어 - 복합 대입 연산자 (0) | 2020.05.07 |
댓글