본문 바로가기

프로그래밍 언어/C언어

C언어 - 논리연산자

이 글에서 우리는 0은 OFF, 1은 ON의 상태를 나타낸다고 하였다.

 

https://reroot.tistory.com/11

 

C언어 5일차 #2진수에 대해 알아보자!

우리가 흔히 사용하는 숫자 1, 2, 3, ···, 10 등의 숫자는 십진수라고 일컫는다. 하지만 컴퓨터는 이진수 기반의 체계로 0과 1을 사용하여 컴퓨터 내에서 정보를 전달한다. 컴퓨터가 이진수를 사용

reroot.tistory.com

 

 

그리고 또한 0은 거짓, 1은 참을 나타낸다.

 

 

https://reroot.tistory.com/21

 

C언어 14-1일차 #뭔가 조금 이상한 비교(?)

#include int main() { int s; s = 85; if (s >= 90) printf("A"); if (s >= 80) printf("B"); if (s >= 70) printf("C"); if (s >= 60) printf("D"); if (s < 60) printf("F"); } 이 코드의 결과를 생각해보자. B..

reroot.tistory.com

 

이 글의 맨 마지막 코드를 살펴보자.

 

 

#include <stdio.h>

int main() {
	int s;
	s = 70;
	if (80 <= s < 90)
		printf("T");
	else
		printf("F");
}

 

당연히 F 가 출력될 것이라고 생각하겠지만

T 가 출력된다.

 

이유에 대해서 알아보자.

 

 

왜 이 식이 F 가 출력되는지 알아보자.

 

이전 글에서 작성한 연산 순서를 고려하였을 때

 

1. 80은 75 이하인가?

 

당연히 "거짓" 이다.

 

 

2. 거짓 < 90

 

이 식은 계산할 수 없다.

 

비교 연산자는 숫자만 처리할 수 있다.

 

 

여기서 "거짓"은 "0"으로 나타낸다.

 

 

그렇다면 0 < 90 은?

 

참이다.

 

참 또한 "1"으로 나타낸다.

 

#include <stdio.h>
main()
{
	int s;
    s = 75;
    if (80 <= s < 90)
    	printf("T");
    else
    	printf("F")
}
#include <stdio.h>
main()
{
	int s;
    s = 75;
    if (0 < 90)
    	printf("T");
    else
    	printf("F")
}
#include <stdio.h>
main()
{
	int s;
    s = 75;
    if (1)
    	printf("T");
    else
    	printf("F")
}

 

혹시나...

 

이와 같이 2가 참인지 물을 경우도 있다.

#include <stdio.h>
main()
{
	int s;
    s = 75;
    if (2)
    	printf("T");
    else
    	printf("F")
}

 

 

 

참은 거짓이 아닌 것이기 때문에,

 

0이 아닌 것은 모두 참이다.

 

1은 그중의 대표일 뿐.

 

 

결론은 T를 출력한다.

 

 

 

그래서 2가 아닌 -2라도 T를 출력한다.

 

 

그렇다면 85 <= s < 90 을 어떻게 계산해야 할까?

 

 

 

우리는 이제 논리 연산자를 배워보도록 하자.

 

 

 

논리곱 (AND)

 

&& 연산은 양쪽 다 참인 경우에만 계산 결과를 참으로 한다.

 

논리합 (OR)

 

|| 연산은 어느 하나라도 참인 경우 계산결과를 참으로 한다.

 

논리 부정 (NOT)

 

! 연산은 참은 거짓으로, 거짓은 참으로 계산 결과를 바꾼다.

 

자 그럼 계산해보자!

 

85 <= s < 90

 

85 이상임과 동시에 90 미만인가?

 

(논리합인가 논리곱인가를 판단하는 경우는

한국어로 다시 한번 생각하고 판단해보자)

 

이것은 논리곱 연산자를 사용하면 되기에

 

#include <stdio.h>

int main() {
	int s;
	s = 75;
	if (80 <= s && s < 90)
		printf("T");
	else
		printf("F");
}

 

이렇게 코드를 작성한다면

 

F 가 출력되는 것을 볼 수 있다!

 

 

 

 

https://book.naver.com/bookdb/book_detail.nhn?bid=8187381

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

C언어 - 사용자 정의 함수 (기본편)  (0) 2021.01.12
C언어 - switch문  (0) 2020.08.17
C언어 - 연산자  (0) 2020.08.12
C언어 - else if, else 문  (0) 2020.08.10
C언어 - while, do while 반복문  (0) 2020.07.22