C 언어 - 연산자

컴퓨터/C

728x90
반응형

연산자

지금까지 C언어에서 변수와 상수를 사용하는 방법에 대하여 공부했습니다. 이제 프로그램 위에 변수와 상수를 올려놓고 다양한 계산을 하는 방법을 알아보도록 하겠습니다. 바로 연산자를 통해서 변수들에 들어있는 값을 제어할 수 있습니다.

 

프로그래밍에서 연산을 한다는 의미는 수학과 같은 사칙연산도 존재하지만 그 외에 다양한 연산이 존재합니다. 이런 다양한 연산자들을 통해 프로그램 안에 있는 데이터를 제어할 수 있어야 됩니다.

 

다양한 연산 연산 형식
대입 연산
산술 연산 +, -, *, /, ++, --
관계 연산 <, >, <=, >=, ==, !=
논리 연산 &&, ||, !
할당 연산 +=, -=, *=, /=, %=
삼항 연산 ?
비트 연산 <<, >>, &..
주소 연산 *.....

본문에서는 기초 연산자들에 대하여 서술하도록 하겠습니다.

 

대입 연산

대입 연산자는 '='를 사용합니다. 

좌항의 값에 우항의 값을 대입시키는 것입니다. 

int a ;
a = 10; // a에 10을 대입시킨다 : a는 10이다.

산술 연산

산수와 유사합니다. 조금 생소한 연산이 있을것 같아 정리해 보도록 하겠습니다.

  • +   : 더하기 연산 
  • -    : 빼기 연산
  • *    : 곱하기 연산
  • /    : 나누기 연산 - 나누기 연산 
  • %   : 나머지 연산 - 정수의 나머지 연산 (실수에서 사용 불가)
  • ++ : 단항 증가 연산 - 변수의 앞 뒤에 붙어 1을 더한다. 변수 앞, 뒤 방향에 따라 우선순위가 있다.
  •  --  : 단항 빼기 연산 - 변수의 앞 뒤에 붙어 1을 뺀다. 변수 앞, 뒤 방향에 따라 우선순위가 있다.

%,--,++은 조금 프로그래밍을 처음 접하는 사람에게는 생소한 연산자 일 것입니다. 소스코드를 통해 무엇인지 알아보도록 하겠습니다.

#include <stdio.h>

int main()
{
	int a,b;
	
	a = 1;
	b = 2;
	printf("더하기 연산 : %d\n", a + b);
	printf("빼 기 연산 : %d\n", a - b);
	printf("곱하기 연산 : %d\n", a * b);
	printf("나누기 연산 : %d\n", a / b);
	printf("나머지 연산 : %d\n", a % b);
	printf("단항 더하기 연산 : %d\n", a++);
	printf("단항 더하기 연산 : %d\n", ++a);
	printf("단항 빼 기 연산 : %d\n", b--);
	printf("단항 빼 기 연산 : %d\n", --b);
}

어떤 결과가 나올지 예상을 한번 해보고 직접 따라해 보세요.

결과 보기

더보기

이제 소스코드를 다시 한번 해석해 보도록 하겠습니다.

  • a + b = 3 
  • a - b = -1 
  • a * b = 2 
    위 3개는 모두 알고 있다 가정하여 생략하겠습니다.
  • a / b = 0 
    - 사람이 계산을하면 0.5라고 입니다. 하지만 C언어에서 우리는 두 변수 a와 b를 정수형으로 선언했습니다.
      따라서 나누기를 해도 값으 정수만 취하기 때문에 0입니다. (더 자세한 내용은메모리에 수를 표현하는 방법에 대해 공부해보세요)
  • a % b = 1
    - 정수끼리의 계산에서 실수(소수점이하)가 존재하지 않기 때문에 나누기 후 나머지 값을 계산합니다. 프로그래밍에서 이러한 특성을 이용해 다양하게 활용됩니다.
  • a++ , ++a 
    - 단항 더하기 연산은 연산자의 위치에 따라 특성이 다릅니다. 프로그래밍 특성상 절차지향이기 때문에 변수뒤에++이 붙는다면, 사용후 더하기, 앞에 붙는다면 더하고 사용하기가 되는 것 입니다.
  • b--, --b
    - 단항 빼기 연산 또한 동일합니다.

관계 연산(산술적 비교 연산)

관계연산자는 좌항과 우항에 대해 산술적인 비교 연산을 하여 결과를 맞으면 1 맞지 않으면 0을 출력합니다.

  • > : 좌항이 우항보다 크면 1 아니면 0
  • < : 좌항이 우항보다 작으면 1 아니면 0
  • >= : 좌항이 우항보다 크거나 같으면 1 아니면 0
  • <= : 좌항이 우항보다 작거나 같으면 1 아니면 0
  • == : 좌항과 우항이 같으면 1 아니면 0
  • != : 좌항과 우항이 다르면 1 아니면 0

소스코드를 통해 실습을 해보겠습니다.

#include <stdio.h>

int main()
{
	int a,b;
	a = 1;
	b = 2;
	printf("a > b 연산 : %d\n", a > b);
	printf("a < b 연산 : %d\n", a < b);
	printf("a >= b : %d\n", a >= b);
	printf("a <= b : %d\n", a <= b);
	printf("a == b : %d\n", a == b);
	printf("a != b : %d\n", a != b);
}

결과보기

더보기

논리 연산(논리적 비교 연산)

논리 연산은 정해진 진리에 의해 결과를 출력합니다.

  • && : AND연산  - 좌항과 우항이 모두 맞으면 1 아니면 0
  •   ||  : OR연산 - 좌항과 우항중 하나만 맞아도 1 
  •   !   : NOT 연산 - 나온 결과를 반전시킴 맞으면 0 아니면 1

소스코드를 통해 실습해보겠습니다.

#include <stdio.h>

int main()
{
	printf("1 && 1 : %d\n", 1 && 1);
	printf("1 && 0 : %d\n", 1 && 0);
	printf("1 || 1 : %d\n", 1 || 1);
	printf("1 || 0 : %d\n", 1 || 0);
	printf("    !1 : %d\n", !1);

}

결과 보기

더보기

 

비교 연산과 논리 연산은 프로그램의 흐름을 제어하는데 필수적인 요소중 하나입니다.

 

할당 연산

할당 연산은 대입 연산자와 산술 연산자를 합친 연산자입니다. 이 연산자를 사용하지 않아도 프로그래밍을 하는데 문제는 없지만, 조금 더 적은 타이핑을 가능하게 합니다. 

소스코드를 통해 차이점을 알아보겠습니다.

 

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 10;
	a = a + 10; 
	printf("a = a + 10의 결과 : %d\n", a);
	b += 10;
	printf("b +=10의 결과 : %d\n", b);
}

결과 보기

더보기

a에 10의 값을 넣고 다시 a는 a 더하기 10 결과는 20이라는 의미와

b에 10의 값을 넣고 b +=10은 b에 10을 더해라 결과는 20

의미는 같지만 소스코드를 좀 더 효율적으로 쓸 수 있게 됩니다.

그 외 연산자들

삼항연산, 비트연산, 주소연산등이 있습니다. 이 3가지 연산들은 추후 다른 부분과 함께 말씀드리도록 하겠습니다.

연산자를 지금 다 알고 활용을 하기에도 쉽지 않기 때문에, 같이 쓰는 개념을 배울때 동반해 배우면 더 기억에 남을 것 입니다. 

728x90
반응형

'컴퓨터 > C' 카테고리의 다른 글

C 언어 - 표준 출력  (0) 2021.05.25
C 언어 - 주석(Comment)  (0) 2021.05.24
C 언어 - 문자의 자료형  (0) 2021.05.23
C언어 변수의 선언과 자료형  (0) 2021.05.22
C 언어 - 상수와 변수  (0) 2021.05.21

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :