여행을 개발하다
연산자(Operater) 본문
안녕하세요!
오늘 포스팅 할 내용은
"연산자(operator)"
입니다.
1. 연산자란?
- 어떤 함수에 작용해 그 함수를 다른 함수로 변형시키는 함수" 위키백과, 검색어 : 연산자
쉽게 말해서 저희가 일상적으로 사용하는 사칙연산을 생각하시면 됩니다.
사칙연산은 다른 말로 '산술 연산자'라고도 불립니다.
하지만 프로그래밍에서는 산술 연산자 말고도 여러 연산자를 사용하는데요.
이제부터 그 종류들을 하나둘씩 알아가 보도록 하겠습니다.
2. 연산자의 우선순위
3 + 4 * 5 = 35 or 23 ????
학창 시절 많이 헷갈렸고, 지금도 가끔 인터넷에서 회자되는 문제 유형이죠.
사칙연산의 우선순위는 (곱셈, 나눗셈), (덧셈, 뺄셈) 순이라는 것, 일반적으로 통용된 사실입니다.
물론, C++ 내에서도 연산자 간의 우선순위가 존재합니다.
* 연산자의 우선순위란?
- 어떤 연산식에서 어느 부분이 먼저 연산이 되어야 하는지를 결정하는 것.
- 같은 종류의 연산자가 있으면, 연산자의 결합 방향에 따라 연산의 우선순위가 결정된다.
라고 정의할 수 있습니다.
연산자와 연산자 종류, 이에 따른 결합 방향은 표로 정리하면 다음과 같습니다.
일반적으로 생각하는 연산 순서인 '(좌→우)'는,
단항 연산자와 대입 연산자의 경우 '(우→좌)'로 이루어진다는 것을 주의해야겠습니다.
연산자 우선순위 |
연산자 종류 |
결합방향 |
|
괄호, 구조체, 공용체 |
( ). [ ], -> |
좌 → 우 |
|
단항 연산자 |
! ~ ++ -- - + * & sizeof |
우 → 좌 |
|
이항연산자 |
승제 |
* / % |
좌 → 우 |
가감 |
+ - |
||
SHIFT |
<< >> |
||
비교 |
< <= > >= |
||
등가 |
== != |
||
bit AND |
& |
||
bit XOR |
^ |
||
bit OR |
| |
||
논리 AND |
&& |
||
논리 OR |
|| |
||
조건 연산자 |
? : |
좌 → 우 |
|
대입 연산자 |
= += -= *= /= %= > >= < <= &= ^= |= |
우 → 좌 |
|
나열 연산자 |
, |
좌 → 우 |
3. 연산자의 종류
연산자의 종류를 크게
"산술 연산자, 증감 연산자, 관계 연산자, 논리 연산자, 대입 연산자"
로 나누어서 살펴보겠습니다.
3.1 산술 연산자
- 위에서 설명한 것처럼 일상생활에서 흔히 쓰이는 가감승제를 의미한다.
연산자 |
의미 |
* |
곱셈 |
/ |
나눗셈 |
% |
나머지 |
+ |
덧셈 |
- |
뺄셈 |
3.2 증감 연산자
- 증가 연산자(++), 감소 연산자(--)는 각각 변수 값을 1만큼 증가시키고, 감소시킨다.
- ++변수, 변수++, --변수, 변수--는 엄연히 다른 값을 출력하는 연산자이므로 순서에 주의.
연산자 & 표현 예 |
의미 |
||
++ |
++a |
a = a + 1 후 a 값을 사용한다. |
|
a++ |
a값을 사용 후 a = a + 1 |
||
-- |
--b |
b = b - 1 후 b값을 사용한다. |
|
b-- |
b값을 사용 후 b = b - 1 |
3.3 관계 연산자
- 조건 검사를 할 때 사용하며, 연산 결과는 참(True,1) 혹은 거짓(False,0)으로 표현된다.
- 두 식 또는 값의 크기를 비교하는 연산자로서, 숫자 및 문자에 모두 적용된다.
- 같다(==)와 변수에 값을 대입하는 대입 연산자(=)와의 혼동에 주의해야 한다.
연산자 |
의미 |
< |
~보다 작다 |
<= |
~보다 작거나 같다 |
> |
~보다 크다 |
>= |
~보다 크거나 같다 |
== |
~와 같다 |
!= |
~와 같지 않다 |
3.4 논리 연산자
- 참인지 거짓인지 판별하는 연산자.
- 주어진 조건이 참이면 결과 값은 1, 주어진 조건이 거짓이면 결과 값은 0이 된다.
연산자 |
의미 |
! |
참은 거짓으로 거짓은 참으로 바꾼다. |
&& |
두 조건의 값이 모두 참일 때 결과값이 참이 된다. (AND) |
|| |
두 조건의 값 중 하나만 참일 때 결과 값이 참이 된다. (OR) |
3.5 대입(Assignment)연산자
- 우항에 있는 값을 계산하여, 좌항에 넣어주는 연산자.
- 대입 연산자를 효율적으로 사용할 경우, 코드의 길이를 획기적으로 줄일 수 있다.
연산자 |
사용 예시 |
의미 |
= |
a = b |
a = b, a에 b의 값을 대입한다. |
+= |
a += b |
a = a + b, a에 a와 b를 더한 값을 대입한다. |
-= |
a -= b |
a = a - b, a에 a에서 b를 뺀 값을 대입한다. |
*= |
a *= b |
a = a* b, a에 a와 b를 곱한 값을 대입한다. |
/= |
a /= b |
a = a / b, a에 a를 b로 나눈 값을 값을 대입한다. |
%= |
a %= b |
a = a%b, a에 a를 b로 나눈 값을 대입한다. |
3.6 비트연산자
- 정수형 자료(int, short, long)의 값을 2진수로 바꿔 이에 대해 비트 단위로 논리 연산을 수행한다.
연산자 |
의미 |
~ |
해당 비트의 값을 반전(1의 보수) 시킨다. (1 → 0, 0 → 1) |
& |
두 비트 값이 모두 1이면 결과가 1이 된다. |
^ |
두 비트 값이 서로 값이 다르면 결과가 1이 된다. |
| |
두 비트 값이 모두 0이면 결과가 0이 된다. |
ex ) 비트 연산 사용 예제
3.7 삼항 연산자
* 형식
- 변수 = 피연산자1 ? 피연산자 2 : 피연산자3 ;
- 피연산자의1의 조건이 참이면 피연산자2의 결과 값이 변수에 저장되고, 거짓이면 피연산자3의 결과 값이 변수에 저장된다.
지금까지 C++의 연산자에 대해서 알아보았습니다
다음 포스팅에서 뵙겠습니다 : )
'BackEnd > C++' 카테고리의 다른 글
제어문2. Switch (0) | 2019.05.08 |
---|---|
제어문1. If (0) | 2019.05.08 |
표준 입출력 함수(printf) (0) | 2019.05.08 |
변수(variable) (0) | 2019.05.07 |
C++ 언어의 기본 구조, 주석(Comment), 솔루션 빌드 및 실행 (0) | 2019.05.07 |