C

[내배캠자습]C언어 챕처2-2 : 증감 연산자, 논리 연산자, 비교 연산자

BreadMushroom 2026. 3. 27. 23:57

증감 연산자

증가/감소의 줄임말. 앞서 살펴본 연산자들과 다르게 단항의 피연산자를 가지는게 특징. 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입니다.