컴퓨터/C언어 쉽게 배워보자

C언어 강좌 7. " 변수와 연산자" 란 무엇일까 (3) - 연산자 편

sdk 2016. 2. 3. 02:38

안녕하세요 sdk입니다.


오늘은 연산자에 대하여 써보도록 하겠습니다


저번에 연산자에 대하여 간략하게 설명해 드렸었는데요

이번 포스팅에서는 조금더 자세하게 다뤄볼 생각입니다.


자 , 저번 포스팅에선 연산자가 무엇 이라고 했는지 기억하시나요?


더하기 빼기 곱하기 나누기 등등 어떠한 연산을 명명해주는 역할을 한다고 했습니다.


자 , 이제 우리는 C언어에서 제공하는 여러가지 연산자에 대하여 알아보도록 하겠습니다.

기본적인 대입 연산자와 산술 연산자 부터 시작하겠습니다


C언어에선  " = " 을 같다 라는 뜻으로 사용하지 않습니다.

값을 저장한다는 의미로 해석하는게 더 올바르답니다!


= 연산자는 왼쪽에 있는 값을 오른쪽에 위치한 변수에 대입하는 역할을 합니다.

대입 연산자는 충분히 설명해 드렸다고 생각되니 이제 


기본적인 사칙 연산자들을 알려드릴때가 되었군요.


1. 대입 연산자 및 사칙 연산자   + , - , * , / , %

 +   연산자는 두 피연산자의 값을 더하는 역할을 합니다.

 -   연산자는 왼쪽에 있는 피연산자의 값에서 오른쪽 피연산자값만큼 뺍니다.

 *   두 피연산자의 값을 곱한다.

 /   왼쪽의 피연산자의 값을 오른쪽의 피연산자 값으로 나눈다 . 

%  왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을때 얻는 나머지값을 반환한다.


더하기 빼기 곱하기 나누기 까지는 항상 접해보셧으니까 충분히 아실겁니다!

%연산자는 처음 보실수도 있는데요, 알기 쉽게 설명해 드리도록 하겠습니다.

%연산자는 말 그대로 나눗셈을 진행할때 나머지 값  그 나머지 값을 내놓는 역할입니다!

5 % 2 의 결과는 1 입니다! ( 5나누기 2 는 2로 나누어 지고 나머지 1을 가집니다 )

2. 복합 대입 연산자  += , -= , *= , /= , %=

 복합 대입 연산자란  사칙 연산자에 대입 연산자를 합쳐놓은 형태입니다.

  +=  b  이 연산은 a = a + b 와 동일한 연산을 진행합니다!

   -=  b  이 연산은 a = a - b 와 동일한 연산을 진행합니다.

   *=  b  이 연산은 a = a * b 와 동일한 연산을 진행합니다.

   /=  b  이 연산은 a = a / b 와 동일한 연산을 진행합니다.

   %=  b  이 연산은 a = a - b 와 동일한 연산을 진행합니다.


 3. 부호 연산자  + , -

 + 와 , - 연산자는 단항 연산자 ( 피연산자가 하나! )로써 부호를 결정해 주는 역할을 합니다 

 ex ) num =   - 1; 


 4. 증가, 감소 연산자  ++ , --

  값을 1 증가 혹은 감소시켜주는 단항 연산자로써 ++ 연산자가 있고 -- 연산자가 있습니다.

 또한 이 연산자는 피연산자의 왼쪽에도 위치할 수 있고 오른쪽에도 위치할 수 있습니다.

 즉 ++num; 과 num++; 똑같이 1을 증가시켜주는 연산을 합니다 하지만 어떤 점이 다를까요?

 ( -- 연산은 1을 감소시키는 연산을 하겠죠? )

 ++ num ; 이런식으로 피연산자 앞에 증가 , 감소 연산자가 위치하면 이를 전위 증가 라고 합니다.

 num ++ ; 이런식으로 피연산자 뒤에 증가 , 감소 연산자가 위치하면 이를 후위 증가 라고 합니다.

 전위 증가는 우선 1 증가시키고 연산을 진행하는 코드입니다.

 후위 증가는 다음 행 ( 라인 )로 넘어가면서 값을 1 증가시키는 코드입니다 ( 즉 그 줄에서는 값을 1 증가시키 전 입니다.)


 5.관계 연산자 < , > , == , != , <= , >= 

  A < B   A 가 B 보다 작다면 참 (1) 크다면 거짓(0)

  A > B  A 가 B 보다 크다면 참 (1) 작다면 거짓(0)

 A == B  A 와 B 가 같다면 참 (1) 다르다면 거짓 (0)

 A != B  A 와 B 가 다르다면 참 (1) 다르다면 거짓(0)

 A <= B A 가 B 보다 같거나 작으면 참 (1) 크면 거짓(0)

 A >= B A 가 B 보다 같거나 크면 참 (1) 작으면 거짓(0)

( 부등식 생각합시다 부등식! ) 


6.논리 연산자 && ,|| , !

 A && B  A와 B 모두 참이면 참(1)을 반환하고 하나라도 거짓이면 거짓 (0)

 A || B   A와 B중 하나라도 참이라면 참을 반환한다

 ! A    A 의 비트를 반전시킨다  !0 == 1   !1 == 0


6.콤마 연산자 , 

 둘이상의 변수를 선언하거나 둘 이상의 문장을 한 행 ( 라인 ) 에 삽입하는 경우에 사용되는 연산자 이다.

ex) int a , int b ; 


7.연산자 우선순위와 결합 방향

 모든 연산자는 그 우선 순위와 결합 방향 ( 연산의 진행 방향 ) 이 있습니다.
 이게 뭔 소리냐? 
 그러니까 , 예를들어

 

식이 있습니다. 여러분들은 어떤 순서로 위 식을 계산하시나요?

먼저 3과 2를 곱하고 4를 더하실 껍니다!

이것을 보고 연산자 우선순위 라고 합니다.

결합 방향은 ... 연산이 진행되는 방향 이라고 생각하시면 되겠습니다.

( 대입 연산의 경우 ← )

 

연산자 우선순위

 연산기호

연산자 

 결합방향

 1위

 ( )

  함수호출

 

 [ ]

  인덱스

 .

  간접지정

 (Postfix)++

(Postfix)--

  후위 증가 및 감소

 2위

 ++(Prefix)

--(Prefix)

  전위 증가 및 감소

 

 sizeof

  바이트 단위 크기 계산

 ~

  바이트 단위 NOT

 !

  논리 NOT

- , +

 부호 연산

 &

 주소 연산

 *

 간접지정 연산

 3위

 (Casting)

 자료형 변환

 

 4위

 * , / , %

 곱셈 나눗셈 관련 연산

 

 5위

 + , - 

 덧셈 뺄셈

 

 6위

 << , >>

 비트이동

 

 7위

 < , > , <= , >=

 대소비교

 

 8위

 == , !=

 동등비교

 

 9위

 &

 비트 AND

 

 10위

 ^

 비트 XOR

 

 11위

 |

 비트 OR

 

 12위

 &&

 논리 AND

 

13위

 ||

 논리 OR

 

 14위

 ? :

 조건연산

 

 15위

 = , +=, -= , *= , /= , %= , <<= , >>= ,&= , ^= , |= 

 대입연산

 

 16위

 ,

 콤마연산

 

C언어에서 등장하는 연산자의 우선순위와 결합방향 표 입니다.

나중에 다시 볼지도 모르니까 스샷을 찍거나 즐겨찾기 해두세요



포스팅 마치겠습니다.







여러분들의 댓글은 큰 힘이됩니다 :)