C 언어에서 조건을 판단하고 값을 저장하는 데 반드시 알아야 할 두 가지 핵심 요소가 바로 논리 연산자(logical operator)와 할당 연산자(assignment operator)입니다. 이 글에서는 각 연산자의 개념과 진리표, 실제 예제 코드와 실행 결과까지 차근차근 살펴보겠습니다.
논리 연산자(Logical Operator)란?
두 개 이상의 표현식(조건식)을 논리적으로 결합하여 참(T)/거짓(F)을 판별할 때 사용합니다.
종류는 논리 AND(&&), 논리 OR(||), 논리 NOT(!) 세 가지입니다.
논리 AND (&&)
두 표현식이 모두 참일 때만 결과가 참이 됩니다.
| exp1 | exp2 | exp1 && exp2 |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
논리 OR (||)
두 표현식 중 하나라도 참이면 결과가 참이 됩니다.
| exp1 | exp2 | exp1 || exp2 |
|---|---|---|
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
논리 NOT (!)
피연산자의 참/거짓을 반대로 뒤집는 단항 연산자입니다.
| exp | !exp |
|---|---|
| T | F |
| F | T |
연산자별 예시
a=10, b=20, c=30일 때의 계산 결과입니다. C 언어에서는 참은 1, 거짓은 0으로 출력됩니다.
| 연산자 | 설명 | 예제 식 | 계산 과정 | 결과 |
|---|---|---|---|---|
| && | 논리 AND | (a>b)&&(a<c) | (10>20)&&(10<30) | 0 |
| || | 논리 OR | (a>b)||(a<=c) | (10>20)||(10<=30) | 1 |
| ! | 논리 NOT | !(a>b) | !(10>20) | 1 |
논리 연산자 예제 프로그램
다음은 논리 연산자를 활용한 C 프로그램입니다.
#include<stdio.h>
main (){
float a=0.5, b=0.3, c=0.7;
printf("%d\n",(a<b)&&(b>c)); // 0
printf("%d\n",(a>=b)&&(b<=c)); // 1
printf("%d\n",(a==b)||(b==c)); // 0
printf("%d\n",(b>=a)||(a==c)); // 0
printf("%d\n",(b<=c)&&!(c>=a)); // 0
printf("%d\n",!(b<=c)||(c>=a)); // 1
}
실행 결과
0 1 0 0 0 1
할당 연산자(Assignment Operator)란?
할당 연산자는 변수에 값을 대입(저장)할 때 사용하는 연산자입니다.
할당 연산자의 종류
- 단순 대입(simple assignment): 오른쪽 값을 그대로 변수에 저장합니다.
- 복합 대입(compound assignment): 산술 연산과 대입을 한 번에 처리합니다.
| 연산자 | 설명 | 예제 |
|---|---|---|
| = | 단순 대입 | a=10 → a에 10을 저장 |
| +=, -=, *=, /=, %= | 복합 대입 | a+=10 → a=a+10 a-=10 → a=a-10 |
복합 대입 연산자 예제 프로그램
다음은 다양한 복합 대입 연산자를 사용한 C 프로그램입니다. 문자형 변수 a에 연산을 적용하면 아스키(ASCII) 코드 값 기준으로 계산됩니다.
#include<stdio.h>
int main(void){
int i;
char a='h';
printf("enter the value of i:\n");
scanf("%d",&i);
printf("print ASCII value of %c is %d\n", a, a);
a += 5;
printf("print ASCII value of %c is %d\n", a, a);
a *= a + i;
printf("a = %d\n", a);
a *= 3;
printf("a = %d\n", a);
a /= 2;
printf("a = %d\n", a);
a %= 4;
printf("a = %d\n", a);
return 0;
}
실행 결과
enter the value of i: 3 print ASCII value of h is 104 print ASCII value of m is 109 a = -80 a = 16 a = 8 a = 0
이처럼 논리 연산자는 여러 조건을 결합해 판단할 때, 할당 연산자는 변수에 값을 효율적으로 저장하고 갱신할 때 사용됩니다. 두 연산자를 잘 이해하면 조건문(if, while 등)과 데이터 처리 로직을 훨씬 깔끔하게 작성할 수 있습니다.