C

C언어를 가르칩니다.

C C언어를 가르칩니다.

논리 연산자

논리 연산자를 알아봅니다.

논리 연산자

정의

명제를 연산 대상으로 갖는 연산자입니다. true(참) 혹은 false(거짓)를 리턴합니다.

종류

&& : 그리고 (AND)
int birth_month,birth_day;
puts("생일의 달과 날짜를 차례대로 입력하시오.");
scanf("%d%d",&birth_month,&birth_day);
if (birth_month==12 && birth_day==25)
    puts("성탄절에 태어났군요!");
|| : 또는 (OR)
int age;
puts("나이를 입력하세요.");
scanf("%d",&age);
if (age<20 || age>=30)
    puts("당신은 20대가 아닙니다.");

수직선(vertical line) 기호 | 를 사용합니다. 일반 키보드에서 백스페이스 키 옆에 있습니다.

^ : 어느 한쪽만 참이라면 (XOR, eXclusive OR, 배타적 논리합)
char China, Japan;
puts("중국 가봤어요? 가봤으면 y, 안 가봤으면 n으로 답하세요.");
scanf("%c",&China);
puts("일본 가봤어요? 마찬가지로 답해보세요.");
scanf("%c",&Japan);
if (China=='y' ^ Japan=='y') puts("당신은 중국만 가봤거나 일본만 가봤군요.");
else puts("당신은 둘 다 안 가봤거나, 둘 다 가봤네요.");
사실 ^는 논리 연산자가 아니라 비트 연산자입니다. 그러나 논리 연산자로도 쓸 수 있습니다(사실, 모든 비트 연산자는, 어느 한 명제가 표현식이 아니라면, 논리 연산자로 쓸 수 있습니다.). ^를 논리 연산자로도 쓸 수 있다는 것을 알아두면 좋습니다.
집합을 배운 분들이라면 ^가 명제 p와 q의 진리집합 P와 Q에서 P∪Q - P∩Q 입을 쉽게 알 수 있을 것입니다.
! : 부정(NOT)
char sex;
puts("생물학적 성을 입력하십시오. 남자면 m, 여자면 f를 입력하십시오.");
scanf("%c",&sex);
if (!(sex=='m')) puts("you are female.");
else puts("you are male.");
!뒤에 오는 명제에 괄호를 씌워주는 이유는 !의 우선순위가 ==보다 높기 때문입니다. 괄호가 없으면 !sex가 먼저 계산되고 그 다음에 =='m'이 계산됩니다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
truelight
현재 버전
선택 버전
graphittie 자세히 보기