본문 바로가기
IT 기술/C언어

C언어 연산자(대입, 산술, 증감, 관계, 논리)_12일차

by 썬's 2023. 2. 8.

안녕하세요 보글리아입니다.

저번 시간에는 printf 사용법과 관련 서식을 알아봤습니다.

이번 시간에는 C언어의 연산자를 배워 보겠습니다.

※제 수업은 이전주차에서 배운 개념을 재차 설명드리지 않습니다※

 


C언어 연산자 소개

C언어에서 연산자는 대수학에 쓰이는 방식과 동일합니다.

다만 여기서 추가되는 게 연산자는 숫자를 계산하고 비교하는데 그치지 않고, 두 값의 참과 거짓을 구하는 데도 사용합니다. 그리고 생김새도 조금 다를 수 있습니다.


1. 대입 연산자

C언어에서 대입 연산자란 =기호를 말합니다. 다만 대수학에서 쓰이는 표현과는 조금 다릅니다.

수학에서 x = 5라는 표현이 있으면 x는 5라는 의미입니다.

하지만 프로그래밍에서 x = 5는 5를 x에 대입한다는 의미로 사용합니다.

어떻게 보면 두 가지 표현이 똑같다고 볼 수 있겠지만, C언어에서 특정 변수에 상수 값이나 다른 변수 값을 대입할 때 사용하면, 얘기가 달라집니다.

 

하단 코드를 보시면 변수 x, y, z, q를 각각 선언하고 값을 대입했습니다.

여기서 =기호는 반드시 상수값만 대입할 수 있는 게 아니라 다른 변수에 값도 대입이 가능하다는 것을 확인하실 수 있습니다. 이처럼 = 기호는 프로그래밍에서 같다가 아닌 대입의 의미로만 사용합니다.

#include <stdio.h>

int main()
{
	int x = 5; // x에 5를 대입
	int y = 7; // x에 7을 대입
	int z = x + y; // z에 x + y를 대입
	int q = z - x; // q에 z - x를 대입

	printf("x = %d \n", x);
	printf("y = %d \n", y);
	printf("z = %d \n", z);
	printf("q = %d \n", q);

	return 0;
}

2. 산술 연산자

C언어에서 산술 연산자는 +, -, /, *, %로 각각 덧셈, 뺄셈, 나눗셈, 곱셈, 나머지 연산을 뜻합니다.

산술 연산자는 두 변수가 있으면, 이 변수끼리 사칙연산을 하는 데 사용합니다.

여기서 곱하기가 x가 아닌 *로 되어있는데요, 프로그래밍 언어에서는 *을 곱하기 연산자로 사용합니다. 

이 이유는 x는 변수명을 짓거나 C언어에서 제공하는 기능에 철자가 들어가기 때문에 이를 구별하기 위해서입니다.

 

하단 코드를 보시면 변수 x, y, z 선언 후 각각 상수 값을 대입했습니다.

그리고 계산은 보통 printf소괄호 내에서 진행해 주시면 됩니다.

#include <stdio.h>

int main()
{
	// 산술 연산자
	int x = 2, y = 7, z = 10;

	printf("x + y = %d \n", x + y);
	printf("x - y = %d \n", x - y);
	printf("x * z = %d \n", x * z);
	printf("z / x = %d \n", z / x);
	printf("x + y * z = %d \n", x + y * z);
	printf("z % y = %d", z % y);

	return 0;
}

출력 결과
출력 결과


3. 증감 연산자

C언어에서 증감 연산자란 프러그래머가 선언한 변수의 값을 순차적으로 증가시키거나 감소시킬 때 사용하는 연산자입니다. C언어에서 값을 1씩 증가시키는 ++증가 연산자와 값을 1씩 감소시키는 --감소 연산자를 제공합니다.

증감 연산자의 사용법은 간단합니다. 증감하고 싶은 변수 앞이나 뒤에 증감 연산자를 작성해 주시면 됩니다.

 

하단 코드를 보시면 변수 x와 y를 선언한 후 값을 대입했습니다. 그리고 x는 1씩 증가시키고, y는 1씩 감소시키기 위해 각각 증가 연산자와 감소 연산자를 작성했습니다. 1씩 증가시킬 때마다 printf로 출력해 보면, 정상적으로 x는 값이 1씩 증가하고 y는 값이 1씩 감소하는 걸 볼 수 있습니다.

 

여기서 증감 연산자에 대한 추가적인 설명을 드리자면 ++, --를 변수 앞에 선언하는 것을 전위형, 변수 뒤에 선언하는 것을 후위형이라 합니다. 이 둘은 똑같이 변수의 값을 1씩 증가시키지만, 추가로 함께 연산을 하는 다른 연산자가 있는 경우 결과 값이 달라집니다. 하단 코드에 z, q, a, b 변수를 잠시 보시면 각각 전위형과 후위형으로 선언 후 출력하면, 결괏값이 살짝 다른 걸 보실 수 있습니다.

  • 전위형 : z가 자신의 값인 5를 1 먼저 증가시키고, 이 증가시킨 값인 6을 q에 대입
  • 후위형 : a가 자신의 값인 5를 먼저 b에 대입하고 a 자신의 값인 5를 먼저 증가시켜 6으로 만듦
#include <stdio.h>

int main()
{
	// 산술 연산자
	int x = 2, y = 7;
	++x, --y;
	printf("x의 값 : %d, y의 값 : %d \n", x, y);
	++x, --y;
	printf("x의 값 : %d, y의 값 : %d \n", x, y);
	++x, --y;
	printf("x의 값 : %d, y의 값 : %d \n", x, y);
	++x, --y;
	printf("x의 값 : %d, y의 값 : %d \n", x, y);
	++x, --y;
	printf("x의 값 : %d, y의 값 : %d \n", x, y);
	++x, --y;
	printf("x의 값 : %d, y의 값 : %d \n", x, y);

	// 전위형
	int z = 5;
	int q = ++z;
	printf("z = %d, q = %d \n", z, q);

	// 후위형
	int a = 5;
	int b = a++;
	printf("a = %d, b = %d \n", a, b);

	return 0;
}

출력 결과
출력 결과


4. 관계 연산자

C언어에서 관계 연산자란 연산한 값의 결과가 참인지 거짓인지의 유무를 판단하는 연산자입니다.

컴퓨터는 연산의 결과 값이 참이면 1로 처리하고, 거짓이면 0으로 처리합니다.

프로그래밍 언어에서 관계 연산자는 <, >, <=, >=, ==, !=를 사용합니다.

여기서 ==는 두 변수의 값이 같다는 의미입니다. 그리고 !=는 두 변수의 값이 같지 않다입니다.

 

하단 코드를 보시면 변수 a와 b, c 선언 후 각각의 변수에 5, 10, 10 값을 대입했습니다.

그리고 각 변수를 관계 연산자를 사용해 결괏값을 출력하면, 정상적으로 해당 결과에 맞춰 참이면 1, 거짓이면 0으로 나온 것을 보실 수 있습니다.

#include <stdio.h>

int main()
{
	// 관계 연산자
	int a = 5, b = 10, c = 10;
	int result1 = a > b;
	int result2 = a < b;
	int result3 = b <= c;
	int result4 = c >= a;
	int result5 = b == c;
	int result6 = b != c;

	printf("%d, %d, %d, %d, %d, %d \n", result1, result2, result3, result4, result5, result6);

	return 0;
}

출력 결과
출력 결과


5. 논리 연산자

C언어에서 논리 연산자란 관계 연산자와 마찬가지로 결괏값이 참이면 1 참이 거짓이면 0이 나옵니다. 

논리 연산자에는 일정한 규칙이 있습니다. 바로 AND, OR, NOT이 있습니다.

프로그래밍 언어에서 AND는 && 키워드를 사용하고 OR은 ||, NOT은  !를 사용합니다.

 

예를 들어 변수 A와 B를 선언하고 값을 관계 연산자로 비교해 본 결과를 result1과 result2라 하겠습니다.

  • && : result1과 result2 모두 참이어야 결괏값도 참, 하나라도 거짓이면 결괏값도 거짓
  • || : result1 또는 result2가 참이면 결괏값도 참, 둘 다 거짓일 때만 결괏값도 거짓
  • ! : result1의 결괏값이 참이면 거짓으로 바뀜, 반대로 거짓이면 결괏값이 참으로 바뀜

하단 코드르 보겠습니다. 변수 A와, B, C 선언 후 값을 각각 대입했습니다.

그리고 각 변수마다 관계 연산식을 두 번 한 결과를 비교하는 논리 연산자를 사용했습니다.

이러한 가정을 총 5개를 만들고 이를 출력해 보면 결괏값이 논리 연산자에 맞게 정상적으로 나오는 것을 보실 수 있습니다. 

#include <stdio.h>

int main()
{
	// 관계 연산자
	int a = 5, b = 10, c = 10;
	int result1 = a > b && b == c;
	int result2 = b >= a || b < c;
	int result3 = a < b && b == c;
	int result4 = c > b || b < a;
	int result5 = !(a > c);

	printf("%d, %d, %d, %d, %d \n", result1, result2, result3, result4, result5);

	return 0;
}

출력 결과
출력 결과


오늘은 C언어의 다양한 연산자를 알아봤습니다.

이러한 연산자는 많이 써봐야 늘기 때문에, 다양한 변수를 만들고 값을 대입해 연습해 보시길 바랍니다.

그럼 다음 시간에는 조금 난이도 있는 조건문을 나가보도록 하겠습니다.

긴 글 읽으시느라 너무너무 고생 많으셨습니다~~

댓글