C언어 논리 연산자에서 &&
연산자는 좌변과 우변이 모두 참
일 때 참
을 반환합니다. ||
연산자는 좌변과 우변이 한 쪽만 참
이여도 전체가 참
입니다. !
연산자는 참
/거짓
을 반대로 반환합니다.
C언어 논리 연산자
C언어 논리 연산자는 관계 연산자처럼 자료의 결과가 True(1)
또는 False(0
)로 이루어진 데이터들을 서로 연산할 때 사용합니다. 또는 데이터를 강제로 1
또는 0
으로 반환해서 연산합니다. 논리 연산의 결과는 똑같이 1
또는 0
으로 반환됩니다.
연산자 | 이름 | 예제 | 의미 |
---|---|---|---|
&& |
논리 AND | a && b |
a 가 참 이고, b 도 참 이면, a && b 는 참 |
|| |
논리 OR | a || b |
a 가 참 이거나 b 가 참 이면, a || b 는 참 |
! |
논리 NOT | !x |
a 가 참 이면 !a 는 거짓 , a 가 거짓 이면 !a 는 참 |
a && b
와 같은 논리 연산자의 변수 a
및 변수 b
는 보통 (x > y) && (x == y)
와 같은 관계 연산자의 수식으로 이루어진 경우가 많습니다.
a && b
&&
연산자는 a && b
수식에서 좌변 a
가 참
이고, 동시에 우변 b
가 참
일 경우 전체 수식 a && b
도 참
이 됩니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x > y) && (x > z) ); // x > y는 5 > 3으로 참입니다. x > z는 5 > 2로 참입니다. 따라서 && 전체 수식도 참입니다.
}
결과
1
a && b
수식에서 좌변 a
가 참
이지만, 우변 b
가 거짓
인 경우 a && b
는 거짓(0)
이 반환됩니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x > y) && (x == z) ); // x > y는 5 > 3으로 참입니다. x == z는 5와 2가 다르므로 거짓입니다. 따라서 && 전체 수식은 거짓(0)입니다.
}
결과
0
a && b
수식에서 좌변 a
가 거짓
이고, 우변 b
가 참
인 경우 거짓(0)
이 반환됩니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x < y) && (x > z) ); // x < y 는 5 < 3으로 거짓, x > z 는 5 > 2으로 참, 전체 결과는 거짓(0)입니다.
}
결과
0
a && b
수식에서 좌변 a
가 거짓
이고, 우변 b
가 거짓
이면, a && b
도 거짓(0)
이 반환됩니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x < y) && (x < z) ); // x < y 는 5 < 3으로 거짓, x < z 는 5 < 2으로 거짓, 전체 결과는 거짓(0)입니다.
}
결과
1
a || b
||
연산자는 a || b
수식에서 좌변 a
가 참
이거나 우변 b
가 참
이면 전체 수식 a || b
도 참
이 됩니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x > y) || (x > z) ); // x > y 는 5 > 3으로 참, x > z 는 5 > 2으로 참, 전체 결과는 참(1)입니다.
}
결과
1
a || b
수식에서 좌변 a
가 참
이고, 우변 b
가 거짓
이여도 전체 a || b
수식은 참(1)
을 반환합니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x > y) || (x < z) ); // x > y 는 5 > 3으로 참, x < z 는 5 < 2으로 거짓, 전체 결과는 참(1)입니다.
}
결과
1
a || b
수식에서 좌변 a
가 거짓
이지만, 우변 b
가 참
일 경우 전체 수식 a || b
는 참(1)
을 반환합니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x == y) || (x != z) ); // x == y 는 5와 3이 같지 않으므로 거짓, x != z 는 5와 2가 서로 다르므로 참, 전체 결과는 참(1)입니다.
}
결과
1
a || b
수식에서 좌변 a
가 거짓
이고, 우변 b
도 거짓
인 경우, 전체 수식 a || b
는 거짓(0)
을 반환합니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
int z = 2;
printf("%d", (x == y) || (x <= z) ); // x == y 는 5와 3이 같지 않으므로 거짓, x <= z 는 5가 2보다 작거나 같지 않으므로 거짓, 전체 결과도 거짓(0)입니다.
}
결과
0
!a
!
연산자는 !a
수식에서 a
가 참
이면 !a
는 거짓
을 반환합니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
printf("%d", ! (x > y) ); // x > y는 5 > 3으로 참입니다. 따라서 ! (x > y)는 반대로 거짓을 반환합니다.
}
결과
0
!a
수식에서 a
가 거짓
이면, !a
는 참
을 반환합니다.
#include<stdio.h>
void main() {
int x = 5;
int y = 3;
printf("%d", ! (x == y) ); // x == y는 5와 3이 서로 같지 않으므로 거짓입니다. 따라서 ! (x == y)는 반대로 참(1)을 반환합니다.
}
결과
1
논리 연산자의 처리 과정을 잘 살펴보면, 논리 연산자는 괄호 안의 수식 보다 나중에 처리 된다는 것을 알 수 있습니다.