본문 바로가기
C언어

세이버의 C언어 강의 8강_연산자란 무엇인가(part 1)

by 비원(Be one) 2018. 11. 5.
반응형

여러분 안녕하세요. 세이버입니다.

 

저번 강에는 scanf 함수를 이용하여 변수에 값을 입력하는 방법을 배워보았습니다.

이번 강에서는 연산자를 통하여 다양한 계산을 하는 법을 알아보도록 하겠습니다.


1. 연산자란 무엇인가?

연산자(operator)의 뜻을 검색해보시면 '프로그램을 짤 때 변수나 값의 연산을 위해 사용되는 부호'라고 나옵니다.

 

그럼 연산은 뭘까요??

연산(operation)의 뜻도 검색해보면 '하나 이상의 대상으로부터 새로운 것을 만들어 내는 것'이라고 합니다.

 

, 연산자란 여러 대상으로부터 새로운 값을 얻는 것을 수행하는 기호입니다.

 

일상생활에서도 많이 쓰는 연산자가 있는데요, 바로 사칙 연산자입니다..

더하기(+), 빼기(-), 나누기(/), 곱하기(X) 등등

두 가지 이상의 값을 더하거나 뺌으로써 새로운 값을 얻는 기호이기에 연산자라고 할 수 있습니다.

 

그리고 반대로 연산을 당하는 변수나 숫자와 같은 값을 피연산자(operand)라고 합니다.

예를 들어 3+5에서 +는 연산자, 3이랑 5가 피연산자입니다.

 

연산자의 종류는 산술, 대입, 복합 대입, 증감, 관계, 논리, 조건, 비트 논리, 비트 이동으로 나뉩니다.

조금 종류가 많긴 한데... 하나씩 차근차근 배워보도록 해봅시다.

 

 

2. 산술 연산자

산술 연산자는 산술(수의 계산)을 수행하는 연산자로 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%)가 있습니다.

위에서 말한 사칙 연산자를 조금 어렵게 말해서 산술 연산자라고 합니다.

 

+-는 많이 보셨겠지만, */, %가 조금 생소하실 겁니다.

C언어에서 곱하기는 X 대신 *을 사용하고, 나누기는 ÷ 대신 /를 사용합니다.

이렇게 우리가 아는 것과 조금 다른 이유는 X, ÷특수 부호이기에 최대한 키보드에 있는 기호로 사용하려고 그렇습니다. (X는 문자의 X와 혼동되기에 *로 대체되었습니다.)

그리고 나머지의 개념이 추가되어 나누기(/)와 비슷한 %를 기호로 사용합니다.

 

간단한 개념이기에 실습하나만 하고 넘어가겠습니다.

 

이렇게 산술 연산자를 사용합니다.

 

여기서 한 가지만 짚고 넘어가면 29행에서 %를 출력하기 위해서 %%로 썼다는 것입니다.

%는 %d, %lf와 같은 서식문자를 위한 기호이기에 %만 쓰면 컴파일러가 읽지 못합니다.

그래서 %를 출력하려면 %%를 써야 %가 출력되니 잊지 마세요.

 

 

3. 대입연산자, 복합대입연산자

대입연산자는 = 하나뿐입니다.

지금까지 변수에 값을 넣을 때 =를 사용한 이유가 =가 대입연산자이기 때문입니다.

=의 오른쪽에 있는 피연산자의 값을 왼쪽 피연산자에 대입하라는 뜻입니다.

 

복합대입연산자는 2장에서 배운 산술연산자와 대입연산자를 합친 것입니다.

변수 a의 값에다 변수 b의 값을 더한 값을 다시 a에 대입하려면 어째야 할까요??

아마 a=a+b;라고 할 겁니다. (이렇게 안 하신 분들은 다시 공부하세요...)

근데 보면 a가 중복돼서 표현되기에 이걸 간략하게 a+=b;라고 할 수도 있습니다.

여기서 +=가 복합대입연산자입니다.

 

복합대입연산자는 +=, -=, *=, /=, %=가 있습니다.

쓰임은 위에서 a=a+b;와 같은 표현을 간략하게 할 때 씁니다.

여기서 주의할 점은 연산한 값을 같은 변수에 넣어야 효과가 있다는 것입니다.

c=a+b;같은 표현에서는 사용 못합니다.

 

한번 실습해보시면 쉽게 이해되실 겁니다.

 

4. 증감연산자

증감연산자는 ++, -- 두 개입니다.

증감(증가, 감소)의 뜻과 같이 변수의 값을 증가하거나 감소시키는 역할을 합니다.

 

사용법은 [변수명++], [++변수명], [변수명--], [--변수명] 이렇게 4가지가 있습니다.

여기서 중요한 점은 값을 1씩 증가하거나 감소시키는 것입니다.

변수 a의 값이 10이라면 a++ 한 값은 11이고,

변수 b의 값이 5라면 b-- 한 값은 4입니다.

 

여기서 또 중요한 포인트는 사용법에 따른 처리입니다.

[변수명++], [변수명--]와 같이 연산자가 변수명 뒤에 붙는 경우를 후위 방식이라 합니다.

반대로 [++변수명], [--변수명]와 같이 연산자가 변수명 앞에 붙는 경우를 전위 방식이라 합니다.

 

전위 방식은 증가나 감소를 시킨 후 처리를 하지만, 후위 방식은 처리를 하고 증가나 감소를 합니다.

 

이렇게 말로만 들으면 뭔 소리인지 이해가 어려우니 실습으로 설명드리겠습니다.

 

num1에는 10, num2에는 30이 들어있습니다.

8행에서는 num1을 후위 방식으로, 9행에서 num2를 전위 방식으로 증감 연산자를 사용했습니다.

그런데 결과를 보면 10, 31로 출력이 됐습니다.

8행에서의 후위 방식은 우선 printf 함수로 출력을 하고(10 출력) num1의 값을 하나 증가시키고, 9행에서의 전위 방식은 num2의 값을 하나 증가시키고 printf 함수로 출력(31 출력)을 한 것입니다.

둘 다 하나가 증가했기에 11, 12행의 출력값을 보면 하나씩 증가된 걸 볼 수 있습니다.

 

이런 사소한 차이가 있지만, 이런 차이가 결과에는 큰 변화를 야기할 수 있습니다.

 

증감 연산자를 단독으로 사용할 경우에는 전위와 후위 방식의 차이가 크게 없습니다.

 


너무 한 번에 많은 걸 배우면 머리 아프실까 봐 이번 강에서는 여기서 마치고, 나머지 연산자들은 다음 강에서 소개해드리겠습니다.

오늘도 수고하셨습니다.

 


정리

- 연산자 : 여러 대상으로부터 새로운 값을 얻는 것을 수행하는 기호

- 산술 연산자 : 사칙연산을 하는 연산자 (+, -, *, /, %)

- 대입 연산자 : 변수에 값을 대입하는 연산자 (=)

- 복합 대입 연산자 : 대입연산자 + 산술 연산자 (+=, -=, *=, /=, %/)

- 증감연산자 : 변수의 값을 1 증가하거나 감소하는 연산자 (++, --)


 

강의가 유익하셨거나 마음에 드셨으면 구독과 좋아요, 댓글 부탁드립니다.

궁금하신 점이나 질문은 댓글이나 메일을 남겨주세요.

 

poci5003@gmail.com

 

반응형