📚연산자
연산자는 산술, 논리, 관계 등 다양한 형태의 연산을 지시합니다. 피연산자는 연산의 대상이 되는 값, 수식, 변수이고 연산자에 따라 1개, 2개, 3개의 피연산자를 사용합니다. 각각 단항, 이항, 삼항 연산자라고 합니다.
📄산술 연산자
수식 |
수식의 값 |
|
1 + 2 |
3 |
|
3 / 2 |
1 |
정수형 연산 결과는 정수형. 소수 부분은 버림 |
3.0 / 2.0 |
1.5 |
|
수식 |
수식의 값 |
|
5 % 2 |
1 |
5를 2로 나누면 나머지는 1 |
5 % -2 |
1 |
5를 -2로 나누면 나머지는 1 |
-5 % 2 |
-1 |
-5를 2로 나누면 나머지는 -1 |
-5 % -2 |
-1 |
-5를 -2로 나누면 나머지는 -1 |
변수 a가 값 1을 가지고 있을 때 연산 예입니다.
수식 |
수식의 값 |
변수의 값 |
|
++a |
2 |
2 |
a 값을 1 증가 시키고 수식의 값은 변화된 값 |
–a |
0 |
0 |
a 값을 1 감소 시키고 수식의 값은 변화된 값 |
a++ |
1 |
2 |
a 값을 1 증가 시키고 수식의 값은 변수의 원래 값 |
a– |
1 |
0 |
a 값을 1 감소 시키고 수식의 값은 변수의 원래 값 |
수식 |
|
+a |
피연산자 a 값 |
-a |
피연산자 a 값의 음수 |
📄논리 연산자
수식 |
|
a > 0 && b > 0 |
a와 b가 모두 0보다 크면 참 |
a > 0 || b > 0 |
a가 0보다 크거나 b가 0보다 크면 참 |
!(a > 0) |
a가 0보다 크면 거짓, 그렇지 않다면 참 |
📄관계 연산자
관계에 대한 참, 거짓을 계산합니다.
연산자 |
의미 |
== |
같은가 여부 비교 |
!= |
다른가 여부 비교 |
>, >=, <, <= |
대소 관계 비교 |
📄비트 단위 논리 연산자
연산자 |
의미 |
&(bit AND) |
대응되는 두 bit가 모두 1일 때 결과는 1 |
| (bit OR) |
대응되는 두 bit 중 하나라도 1이면 결과는 1 |
^(bit XOR) |
대응되는 두 bit가 서로 다를 때만 결과는 1 |
~(bit NOT) |
1은 0으로 0은 1로 바꿈 |
📄비트 이동 연산자
좌측 피연산자의 각 비트를 우측 피연산자로 지정된 비트 수만큼 이동합니다.
연산자 |
의미 |
« |
bit 왼쪽으로 이동 |
» |
bit 오른쪽으로 이동 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #include <iostream>
int main()
{
int r = 255, g = 255, b = 0;
unsigned int color;
color = r << 16 | g << 8 | b;
printf("%x \n", color);
// 비트마스크 0xFF를 이용하여 r, g, b 추출
r = color >> 16 & 0xFF;
g = color >> 8 & 0xFF;
b = color & 0xFF;
printf("r = %x, g = %x, b = %x \n", r, g, b);
}
|
📄대입 연산자
대입 연산자는 우측 피연산자인 수식의 값을 좌측 피연산자에 저장합니다. 좌측 피연산자를 l-value라고 하고, 우측 피연산자를 r-value라고 합니다.
l-value는 변수와 같이 값을 저장하는 공간을 의미하고, r-value는 저장할 값을 제공하는 변수, 상수 또는 이들을 포함하는 수식을 의미합니다.
연산자 |
기능 |
= |
오른쪽을 왼쪽에 대입 |
+= |
a = a + 1; a에 1을 더한 후 결과를 a에 대입 |
-= |
a = a - 1; a에 1을 뺀 후 결과를 a에 대입 |
*= |
a = a * 1; a에 1을 곱한 후 결과를 a에 대입 |
/= |
a = a / 1; a에 1을 나눈 후 결과를 a에 대입 |
%= |
a = a % 1; a에 1을 나눈 후 나머지 결과를 a에 대입 |
&= |
a = a & 1; a와 1에 대해 bit단위의 AND 연산을 하고 결과를 a에 대입 |
|= |
a = a | 1; a와 1에 대해 bit단위의 OR 연산을 하고 결과를 a에 대입 |
^= |
a = a ^ 1; a와 1에 대해 bit단위의 XOR 연산을 하고 결과를 a에 대입 |
«= |
a = a « 1; a 값을 1bit 왼쪽으로 이동 후 결과를 a에 대입 |
»= |
a = a » 1; a 값을 1bit 오른쪽으로 이동 후 결과를 a에 대입 |
📄조건 연산자
조건 연산자는 조건의 만족 여부에 따라 지정된 수식을 수행하는 연산자입니다. 3개의 피연산자를 가지고 있어 3항 연산자입니다. 지정된 조건이 참인지 거짓인지에 따라 값을 선택할 수 있게 합니다.
수식 |
의미 |
a > 0 ? b : c |
a > 0이 참이면 수식의 값은 b, 거짓이면 c |
📄기타 연산자
연산자 |
기능 |
, |
순차적으로 실행할 명령을 연결 |
& |
주소 연산자로서 피연산자의 주소를 나타냄 |
* |
내용 연산자로서 피연산자의 내용을 가져옴 |
new |
저장공간을 동적 할당 |
delete |
동적 할당 메모리를 반환 |
. |
구조체나 객체의 멤버 선택 |
-> |
구조체나 객체 포인터를 이용하여 멤버 선택 |
() |
함수 호출 |
[] |
배열의 첨자 지정 |
:: |
전역 명칭 또는 유효범위 결정 |
sizeof() |
지정한 자료형, 변수, 수식이 차지하는 기억공간의 크기(byte)를 구함 |
📄연산자 우선순위 및 결합 방향
연산자 우선순위는 여러 개의 연산자가 함께 사용되는 수식에서 어느 연산을 먼저 할 것인가를 결정하는 규칙입니다. 그리고 연산자의 결합 방향은 동일한 우선순위를 갖는 연산자가 연속해서 이어질 때 좌측부터 계산할지 우측부터 계산할지 정하는 규칙입니다.
우선순위와 결합 방향에 대한 내용은 아래 링크를 참고하시길 바랍니다.
https://learn.microsoft.com/ko-kr/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-170
Leave a comment