📚연산자

연산자는 산술, 논리, 관계 등 다양한 형태의 연산을 지시합니다. 피연산자는 연산의 대상이 되는 값, 수식, 변수이고 연산자에 따라 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