C언어 강좌 7. " 변수와 연산자" 란 무엇일까 (3) - 연산자 편
안녕하세요 sdk입니다.
오늘은 연산자에 대하여 써보도록 하겠습니다
저번에 연산자에 대하여 간략하게 설명해 드렸었는데요
이번 포스팅에서는 조금더 자세하게 다뤄볼 생각입니다.
자 , 저번 포스팅에선 연산자가 무엇 이라고 했는지 기억하시나요?
더하기 빼기 곱하기 나누기 등등 어떠한 연산을 명명해주는 역할을 한다고 했습니다.
자 , 이제 우리는 C언어에서 제공하는 여러가지 연산자에 대하여 알아보도록 하겠습니다.
기본적인 대입 연산자와 산술 연산자 부터 시작하겠습니다
C언어에선 " = " 을 같다 라는 뜻으로 사용하지 않습니다.
값을 저장한다는 의미로 해석하는게 더 올바르답니다!
= 연산자는 왼쪽에 있는 값을 오른쪽에 위치한 변수에 대입하는 역할을 합니다.
대입 연산자는 충분히 설명해 드렸다고 생각되니 이제
기본적인 사칙 연산자들을 알려드릴때가 되었군요.
1. 대입 연산자 및 사칙 연산자 + , - , * , / , %
+ 연산자는 두 피연산자의 값을 더하는 역할을 합니다.
- 연산자는 왼쪽에 있는 피연산자의 값에서 오른쪽 피연산자값만큼 뺍니다.
* 두 피연산자의 값을 곱한다.
/ 왼쪽의 피연산자의 값을 오른쪽의 피연산자 값으로 나눈다 .
% 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을때 얻는 나머지값을 반환한다.
더하기 빼기 곱하기 나누기 까지는 항상 접해보셧으니까 충분히 아실겁니다!
%연산자는 처음 보실수도 있는데요, 알기 쉽게 설명해 드리도록 하겠습니다.
%연산자는 말 그대로 나눗셈을 진행할때 나머지 값 그 나머지 값을 내놓는 역할입니다!
5 % 2 의 결과는 1 입니다! ( 5나누기 2 는 2로 나누어 지고 나머지 1을 가집니다 )
2. 복합 대입 연산자 += , -= , *= , /= , %=
복합 대입 연산자란 사칙 연산자에 대입 연산자를 합쳐놓은 형태입니다.
a += b 이 연산은 a = a + b 와 동일한 연산을 진행합니다!
a -= b 이 연산은 a = a - b 와 동일한 연산을 진행합니다.
a *= b 이 연산은 a = a * b 와 동일한 연산을 진행합니다.
a /= b 이 연산은 a = a / b 와 동일한 연산을 진행합니다.
a %= 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)
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언어에서 등장하는 연산자의 우선순위와 결합방향 표 입니다.
나중에 다시 볼지도 모르니까 스샷을 찍거나 즐겨찾기 해두세요
포스팅 마치겠습니다.