3.5 논리 연산자    [doc]    [smts]

 논리 연산자는 다수의 조건식을 논리식으로 연결하는 연산자이이다. C 언어의 논리 연산자는 다음과 같은 것들이 있다.


[표 3.5.1] 논리 연산자.

논리연산자

의미

사용 예

&&

AND

i>80 && i<90

||

OR

i>10 || i<20

!

NOT

!(i<10)


논리 연산자에서 NOT의 의미인 ‘!’ 연산자는 관계 연산자의 ‘같지 않다’인 ‘!=’와 비슷하다. 그래서 초보자들은 가끔 혼동하는 경우가 있으니 주의해야 한다.


 예를 들어 정수형 변수 ‘ia가 0보다 크고 10보다 작다’ 라는 논리식은 다음과 같이 ‘0보다 크다’와 ‘10보다 작다’ 라는 논리식을 and로 묶어야 한다.


0 < ia  && ia < 10

세 개 이상의 조건문도 논리 연산자로 묶을 수 있다. ‘문자형 변수 ca가 ‘a’ 이거나 ‘b’ 혹은 ‘c’이다’라는 논리식을 다음과 같이 or로 묶어야 한다.


ca == ‘a’ || ca == ‘b’ || ca == ’c’

다음 논리식은 ! 연산자를 이용한 예이다.


!(ia>0) // ia<=0과 같다.
!(ca == ‘a’ || ca == ‘b’) // (ca != ‘a’ && ca != ‘b’) 과 같다.

 논리 연산자는 관계 연산자와 마찬가지로 내부적으로 참(true), 거짓(false)의 값을 가진다. &&는 양쪽 조건식이 모두 참일 때 전체 조건식이 참이 되며 ||는 양쪽 조건식 중 하나 이상이 참일 때 전체 조건식이 참이 된다. !은 참은 거짓으로, 거짓은 참으로 논리값을 바꿔준다.


 실습으로 어떤 short형 변수 값이 양의 짝수인지를 판별하고 어떤 실수형 변수가 1보다 크거나 –1보다 작은지를 검사하는 프로그램을 작성해보자.


ex03-07.c
#include <stdio.h>
int main(void) {
   short sA = 10;
   float fX = 2.0f;
   if ( sA>0 && sA%2 == 0 )
       printf("sA is a positive even number.\n");
   if ( fX<-1 || fX>1 )
       printf("|fA|<1.\n");
}

이것을 실행하면 첫 번째 printf()문만 수행될 것이다.



'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

C/C++의 증감연산자(++, --)  (0) 2015.05.19
C/C++의 조건 연산자(?:)  (0) 2015.05.19
C/C++의 논리 연산자  (0) 2015.05.19
3.4 관계 연산자  (0) 2015.05.19
3.2 산술 연산자와 부호 연산자  (0) 2015.05.19
3.3 형변환  (0) 2015.05.19
Posted by 살레시오

댓글을 달아 주세요