이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다.
연산자
c++ 연산자에는 단항(unary) 연산자, 이항(binary) 연산자, 삼항(ternary) 연산자가 있습니다. 가장 많이 쓰이는 연산자는 이항연산자로 =, +, -, *, %, /, +=, *=, /=, %=, &, &=, |, |=, <<, >>, <<=, >>=, ^, ^= 있습니다. 또 단항 연산자로는 !, ++, --,이 있고, 삼항연산자로는 [조건]?[동작1]:[동작2]로 표현되는 조건 연산자가 있습니다. 다음 표는 연산자의 종류와 사용 예를 나타내는 표입니다.
= | 오른쪽 값을 왼쪽의 표현식에 대입하는 이항 연산자 | Int i; i = 3; int j; j = i; |
! | 표현식의 참/거짓(또는 0이 아닌 값과 0)을 반전시키는(보수를 구하는) 단항 연산자 | bool b = !true; bool b2 = !b; |
+ | 덧셈을 나타내는 이항 연산자 | int i = 3 + 2; int j = i + 5; int k = i + j; |
- * / |
뺄셈, 곱셈, 나눗셈을 나타내는 이항 연산자 | int i = 5 - 1; int j = 5 * 2; int k = j / i; |
% | 나눗셈의 나머지를 계산하는 이항 연산자, 모드(mod), 모듈로(modulo) 또는 나머지 연산자라 부른다. | int remainder = 5 % 2; |
++ | 표현식의 값에 1을 더하는 단항 연산자, 이 연산자가 표현식 뒤에 나오면 그 표현식의 결과 자체는 바뀌지 않고 다음 문장부터 1이 더해진 값이 적용된다(사후 증가, 후행 증가, post-increment). 반면 이 연산자가 표현식 앞에 나오면 표현의 결과에 곧바로 1을 더한 값이 반영된다.(사전 증가, 선행 증가, pre-increment). | i++; ++i; |
-- | 표현식의 값에서 1을 빼는 단항 연산자. 표현식의 앞에 붙거나(사전 감소, 선행감소, pre-decrement) 뒤에 붙을 때(사후 감소, 후행 감소, post-decrement)의 동작은 ++와 비슷하다. | i--; --i; |
+= | i = i + j;의 축약 표현 | i += j; |
-= *= /= %= |
각각 다음 문장에 대한 축약 표현이다. i = i - j; i = i * j; i = i / j; i = i & j; |
i -= j; i *= j; i /= j; i %= j; |
& &= |
양쪽에 나온 표현식끼리 비트 단위(bitwise) AND 연산을 수행한다. | i = j & k; j &= k; |
| |= |
양쪽에 나온 표현식끼리 비트 단위 OR 연산을 수행한다. | i = j | k; j |= k; |
<< >> <<= >>= |
왼쪽에 나온 표현식의 비트값을 오른쪽에 나온 수만큼(<<)또는 오른쪽(>>)으로 시프트(shift, 이동)한다. | i = i << 1; i = i >> 4; i <<= 1; i >>= 4; |
^ ^= |
양쪽 표현식에 대해 비트 단위 XOR(exclusive or, 베타적 논리합)연산을 수행한다. | i = i ^ j; |
연산자는 우선순위를 갖습니다. c++에서는 /, *, % 연산을 가장 먼저 수행하고 그 다음 덧셈, 뺄셈을 계산하고, 마지막으로 비트 연산을 수행합니다. 우선 순위가 같을 때는 왼쪽에서 오른쪽 순서로 계산합니다. 또 표현식에 소괄호를 넣으면 연산의 실행 순서를 명확히 드러낼 수 있습니다.(괄호안에 연산을 먼저 실행함)
int i = 34 + (8 * 2) + ((21 / 7) % 2);
소괄호를 잘 활용하면 우선순위를 외우지 않아도 원하는 연산을 의도대로 정확히 할 수 있으니 적극활용하시기 바랍니다.
'Program Language > c++' 카테고리의 다른 글
C++ 기초(구조체) (0) | 2023.01.03 |
---|---|
c++ 기초(enum) (0) | 2023.01.02 |
c++ 기초(리터럴 & 변수) (0) | 2022.12.26 |
c++ 기초(namespace) (0) | 2022.12.22 |
c++ 기초("Hello, World!") (0) | 2022.12.22 |
댓글