증감 연산자
증가/감소의 줄임말. 앞서 살펴본 연산자들과 다르게 단항의 피연산자를 가지는게 특징. ex) ++Num; 증감 연산자에는 전치 증감 연산자와 후치 증감 연산자가 있습니다. 각각 피연산자의 앞 혹은 뒤에 붙습니다.
전치/후치 의미
전치는 지금 당장, 후치는 다음 줄에 연산됩니다.
ex) ++Num이라면 지금 당장 Num이 1 증가. Num++이라면 다음 줄에 Num이 1 증가.
Ex020201**) 전치/후치 증감 연산자**
다음의 소스코드의 출력 결과를 예측해봅시다. 예측 결과와 실행 결과와 비교해봅시다.
// Main.c
#include <stdio.h>
int main(void)
{
int Num = 3;
printf("%d", ++Num);
printf("%d", Num++);
printf("%d", Num--);
return 0;
}
// Main.c
#include <stdio.h>
int main(void)
{
int Num = 10;
printf("%d", Num); //10
printf("%d", Num++); //10
printf("%d", ++Num); //12
printf("%d", Num--); //12
return 0;
}
논리 연산자를 배우기 전에.
C언어에서는 0은 거짓(false)입니다. 0 이외의 모든 값은 참(true)입니다. 그렇다면 -8은 참일까 거짓일까요?
답:참 (음수도 0은 아니라서 참으로 표시)
거짓에 준하는 값(falsy)
NULL, ‘\0’, …
논리 연산자
피연산자를 참 혹은 거짓으로 평가한 후에 논리 연산을 수행합니다. 계산된 결과값도 참 혹은 거짓입니다. 즉, 불대수(boolean) 연산자. ex) 7 && 0, !7, …
논리 연산자의 종류
논리 곱 연산자(&&), 논리 합 연산자(||), 논리 반전 연산자(!) 참고로 논리 합 연산자 기호는 엔터 위, Shift + \를 누르면 됩니다.
논리 연산자 꿀팁
“논리”라는 단어에 집중하기보다 곱 또는 합 단어에 집중하시면 됩니다. 논리 곱 연산자는 곱셈으로, 논리 합 연산자는 덧셈으로 치환해서 생각합시다. 그럼 굳이 진리표(truth table)를 외울 필요가 없습니다.
7 && 0; // == 1 * 0 == 0
-7 || 0; // == 1 + 0 == 1
Ex020202**) 논리 연산자**
다음의 소스코드의 출력 결과를 예측해봅시다. 예측 결과와 실행 결과와 비교해봅시다.
// Main.c
#include <stdio.h>
int main(void)
{
printf("%d", 3 && 0); // 1 && 0 ->
printf("%d", -2 && 1); // 1 && 1
printf("%d", -7 || 1); // 1 || 1
printf("%d", 0 || 1); // 0 || 1
return 0;
}
// Main.c
#include <stdio.h>
int main(void)
{
printf("%d", 0 && 0); // 0 && 0 -> false
printf("%d", -2 && -1); // 1 && 1 -> true
printf("%d", -10 || -2); // 1 || 1 -> true
printf("%d", 0 || 17); // 0 || 1 -> true
return 0;
}
관계 연산자
피연산자 간의 관계(대소, 대등, …)를 판단하는 연산자. ex) 3 < 2, 4 != -1, 3 == 3, …
주의할 점은 대등 연산자가 수학와 다르게 두개.
등호도 두 개를 작성해야 대등 연산자(==) 반대로 다르다는 !=
Ex020203**)** 잘못된 비교 연산
다음의 소스코드의 출력 결과를 예측해봅시다. 예측 결과와 실행 결과와 비교해봅시다.
// Main.c
#include <stdio.h>
int main(void)
{
int Num = 3;
printf("%d", 5 < Num < 10);
return 0;
}
// Main.c
#include <stdio.h>
int main(void)
{
int Num = 3;
//printf("%d", 5 < Num < 10);
printf("%d", 5 < num && num < 10); //올바른 표기
return 0;
}
수학에서는 num이 5보타 크고 10보자 작냐의 뜻이지만
프로그래밍에선 5 < num 계산 후 그 값을 1/0(참과 거짓)으로 도출
도출된 값 < 10 을 계산
5 < 3 계산 후 0(거짓) 도출
0 < 10 계산 후 1(참) 도출
Short-Circuit
&& 연산자에서 앞 쪽 피연산자가 false라면 뒤 쪽은 평가하지 않고 곧바로 false로 귀결됩니다. || 연산자에서 앞 쪽 피연산자가 true라면 뒤 쪽은 평가하지 않고 곧바로 true로 귀결됩니다. &&는 곱셈입니다. 앞이 0이면 뒤는 뭐가 와도 그 결과가 false입니다. 그래서 뒤쪽은 평가하지도 않고 0입니다. || 연산도 덧셈이니, 앞이 1이면 뒤는 무슨 수가 와도 그 결과가 true입니다.
'C' 카테고리의 다른 글
| [내배캠자습]C언어 챕터 3-2 : 단순 if문 (0) | 2026.03.28 |
|---|---|
| [내배캠자습]C언어 챕터 2-3:형변환 연산자, 삼항 연산자, sizeof (0) | 2026.03.28 |
| [내배캠자습]C언어 챕터 2-1 : 연산자와 피연산자, 산술 연산자, 복합 대입 연산자, 값식문 (0) | 2026.03.27 |
| [내배캠자습] C언어 챕터 1-11 : 입력 기초 (0) | 2026.03.27 |
| [내배캠자습]C언어 챕터 1-10 : ASCII (0) | 2026.03.27 |