본문 바로가기
PROGRAMMING/C

논리연산자 ( 논리 곱, 논리 합, 논리 부정 연산자)

by 쪼렙엔지니어 2022. 9. 21.
반응형

이번시간에는 논리연산자에 대해서 이야기 해 보겠습니다.

일단 먼저 지난시간에 배운 if문을 활용하여 만든 아래의 예제를 먼저 보겠습니다.

위 예제를 풀이해 보자면 키를 입력받고 입력받은 키가 170이상이고, 180미만이면 "당신의 키는 정상입니다."라는 문구가 출력되는 프로그램입니다. 여기서는 if문을 사용하여 조건을 만들었는데 170이상과 180미만을 동시에 표현하기 힘들어서 if문을 중복으로 작성하여 조건문을 완성하였습니다. 이 프로그램을 좀 더 간결하게 만들 수는 없을까요? 물론 가능합니다. 아래 예제를 확인해 주세요.

 

1. 논리 곱 연산자 &&

조건문이 하나라서 많이 줄어든것 같지는 않지만 그래도 훨씬 보기에 간단해 진것을 확인 해 볼 수 있습니다. 위 와같이 && 연산자를 논리 곱 연산자 (Logical AND)라고 부르며 &&은 두개의 조건식이 모두 1(참)이 되어야 if문의 결과를 참으로 보고 지정된 프로그램을 실행합니다. 그렇다면 왜 &이 아니라 &&을 사용한 것일까요? &은 비트 사이에서 and연산을 하고자 할 때 사용하는 비트 연산자이고, 조건식 사이에서 관계를 연산하고자 한다면 논리 곱 연산자인 &&을 사용해야 합니다. 가끔씩 헷갈리는 부분이니 꼭 기억하시기 바랍니다.

 

2. 논리 합 연산자 ||

다음은 논리 합 연산자에 대해서 이야기 해 보겠습니다. 바로 예제부터 확인해 보겠습니다.

이번에는 변수를 두가지를 사용했습니다. 수학점수와 영어점수를 입력받아서 어느 한가지라도 90점을 넘으면 우등생이라고 알려주는 프로그램입니다. 여기서는 if문의 조건식에 ||을 사용할 것을 확인할 수 있습니다. &&이 논리곱이었다면 ||은 논리합을 의미합니다. 논리곱은 두 조건 모두를 만족할 때 조건을 만족하는 것이되고, 논리합은 두 조건 중 하나라도 만족한다면 조건을 만족하는 것이 됩니다. 실행시켜서 결과를 확인해 볼까요?

수학점수와 영어점수가 둘다 90점을 넘지 못하였을때는 프로그램이 그냥 종료되었고, 두 과목 중 하나라도 90점을 넘을 때는 "당신은 우등생 입니다."라는 문구가 출력되는 것을 확인 할 수 있었습니다.

 

3. 논리 부정 연산자 !

논리연산자 중에서 마지막으로 논리 부정에 대해서 이야기 해 보겠습니다. 논리 부정은 말 그대로 조건이 참인 경우 거짓으로 변환시키고, 거짓인 경우에는 참으로 변환시키는 논리연산자 입니다. 바로 아래 예제를 확인해 보겠습니다.

논리 합 연산자에서 보았던 예제에서 논리 부정 연산자 조건문을 추가하였습니다. 

위에서 보았듯이 if문의 조건식에서 소괄호를 하나 더 추가하고 논리 부정 연산자 심볼인 !를 넣어주면 됩니다. 어려운것은 없죠? 그럼 기존의 논리 합 연산자일때와 논리 부정 연산자가 추가되었을때의 차이는 무엇일까요? 논리 합 연산자만 있는 조건식은 아까 확인했던것과 같이 수학점수나 영어점수 중 한 과목이라도 90점을 넘으면 조건이 1(참)이 되어 우등생이라는 문장이 출력되었습니다. 논리 부정 연산자가 추가되면 정확하게 반대로 생각하시면 됩니다. 수학점수와 영어점수 모두 90점을 넘지 못할 경우 조건식이 1(참)이 된다고 생각하시면 됩니다. 그럼 실행하여 결과를 확인해 볼까요?

두 과목 중 한 과목이라도 90점을 넘으면 우등생이라는 문장이 출력되고, 두 과목 모두 90점을 넘지 못하는 경우 우등생이 아니니 노력하라는 문장이 출력되는 것을 확인 할 수 있습니다. 간단하죠? 논리 연산자를 이용하면 조건식을 좀 더 간단하게 작성이 가능합니다. 연습을 통해 완벽하게 이해 할 수 있도록 하는 것이 좋습니다.

오늘은 여기까지 입니다. 감사합니다.

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.

 

반응형

'PROGRAMMING > C' 카테고리의 다른 글

C언어 FOR 문 (무한반복문)  (0) 2022.09.28
C언어 FOR 문 (반복문)  (2) 2022.09.26
C언어 if - else 문 ( else if 문 )  (1) 2022.09.19
C언어 if 문  (0) 2022.09.15
문자 데이터 활용 (문자의 입력과 출력)  (0) 2022.09.13

댓글