코딩/C++

[C++]연산자

Hun die 2022. 4. 7. 17:10
데이터를 가공(연산)하는 모든 명령에 필요한 것들

 

  1. 어떤 종류의 연산자들이 있는가?
  2. 우선 순위 : 어떤 순서로 연산이 진행되는가?
  3. 결합 순서 : 좌측부터 연산하는 연산자, 우측부터 연산하는 연산자

 

연산자의 종류

 

1. 사칙연산 : 산술연산자

기호 설명 예시
+ 더하기 11 + 3= 7
- 빼기 11 - 3= 8
* 곱하기 11 * 3= 33
/ 나누기 11 / 3= 3
% 나머지 11 % 3= 2
계산 우선 순위 :   *, /, %  는  +, - 보다 우선 계산된다.

예시)

//사칙연산 예시
        int left_value = 11;
        int right_value = 3;
        //0으로 나눌때 런타임 에러 발생

        cout << "Left_value = " << left_value << "\n" << "Right_value = " << right_value << "\n\n";

        cout << " + : " << left_value + right_value << endl;
        cout << " - : " << left_value - right_value << endl;
        cout << " * : " << left_value * right_value << endl;
        cout << " / : " << left_value / right_value << endl;
        cout << " % : " << left_value % right_value << endl;

결과)

 

 

2. 대입연산자

왼쪽 항에 오른쪽 항의 값을 대입한다.(복사한다)

기호 설명 예시
= 왼쪽 항에 오른쪽 항의 값을 대입 A=1, B=2 -> A=B -> A=2, B=2

 

3. 복합대입연산자

기호 설명 예시
+= 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를 대입 A %= B   ->   A = A % B
%에서(변수는 정수형 타입이어야 한다)

예시)

//복합대입연산자 예시
        int left_value = 11;
        int right_value = 3;
        int a;
        a = left_value;

        cout << left_value << "," << right_value << "\n\n";

        cout << "+ : " << (left_value += right_value) << endl;
        left_value = a;  //left의 데이터가 바뀌므로 다시 복구하는 용도
        cout << "- : " << (left_value -= right_value) << endl;
        left_value = a;
        cout << "* : " << (left_value *= right_value) << endl;
        left_value = a;
        cout << "/ : " << (left_value /= right_value) << endl;
        left_value = a;
        cout << "% : " << (left_value %= right_value) << endl;​

결과)

 

4. 증감연산자

특정 변수의 값을 1씩 증가시키거나 감소시킬 때 사용한다.

기호 설명 예시
A++ 출력 후 1을 더함 A=2, A++ -> 출력2  메모리 3
++A 1을 더한 후 출력함 A=2, ++A -> 출력 3 메모리 3
A-- 출력 후 1을 A=2, A-- -> 출력 2 메모리 1
--A 1을 뺀 후 출력함 A=2, --A -> 출력 1 메모리 1
앞 뒤 붙이는 위치에 따라 결과가 달라짐

예시)

//증감연산자 예시
        int left_value = 14;
        int a;
        a = left_value;

        cout << " Left_value = " << left_value << "\n" << "\n\n";

        cout << " 앞++ 출력 " << ++left_value << " 메모리" << left_value << endl; //출력 : 15 메모리 : 15
        left_value = a;
        cout << " 뒤++ 출력 " << left_value++ << " 메모리" << left_value << endl; //출력 : 14 메모리 : 15
        left_value = a;
        cout << " 앞-- 출력 " << --left_value << " 메모리" << left_value << endl; //출력 : 13 메모리 : 13
        left_value = a;
        cout << " 뒤-- 출력 " << left_value-- << " 메모리" << left_value << endl; //출력 : 14 메모리 : 13

예시)

 

5. 관계연산자

두 값을 비교한 결과가 참(1, true)인지 거짓(0, false)인지 반환하는 연산자

 

기호 설명 예시
< 왼쪽 항의 값이 오른쪽 항의 값보다 작으면 을 반환한다. a < b
a가 작으면 true
b가 작으면 false
> 왼쪽 항의 값이 오른쪽 항의 값보다 크면 을 반환한다. a > b
a가 크면 true
b가 크면 false
<= 왼쪽 항의 값이 오른쪽 항의 값보다 작거나 같으면 을 반환한다. a <= b
a가 b보다 작거나 같으면 true
b가 작으면 false
>= 왼쪽 항의 값이 오른쪽 항의 값보다 크거나 같으면 을 반환한다. a >= b
a가 b보다 크거나 같으면 true
b가 크면
  false
== 왼쪽 항의 값과 오른쪽 항의 값이 같을 때 을 반환한다. a == b
a와b가 같으면 true
a와b가 다르면 false
!= 왼쪽 항의 값과 오른쪽 항의 값이 다를 때 을 반환한다. a != b
a와b가 다르면 true
a와b가
 같으면 false
참(True)을 표시하는 숫자는 0이외 숫자
거짓(False)을 표현하는 숫자는 0

 

6. 관계연산자

기호 설명 예시
&& 논리곱 (AND) a && b
a와 b가 참이면 True 아니면 False
|| 논리합 (OR) a || b
a혹은 b가 참이면 True 아니면 False
! 논리부정(NOT) !a
a가 거짓이면 True 참이면 False(반대)

 

7. 삼항연산자

기호 설명 예시
a ? b : c a는 연산자 b와 c는 동작문으로
a의 결과로 인해 b혹은 c가 실행됨
a ? b : c
a가 True면 b가 실행
a가 False면 c가 실행

 

예시)

1. 고객의 나이를 입력받아서 미성년자(19세 이하)이면 FALSE를 출력 성인이면 TRUE를 출력
2. 아까 입력 받은 나이를 기준으로, 주민 등록증 발급 대상이면(20세 만) TRUE를 아니면 FALSE를 출력
3. 아홉수 (1의 자리가 9인 수)인지 확인해서 TRUE, FALSE를 출력
int Age;

    cout << "나이 입력 : ";
    cin >> Age;
    
    cout << boolalpha; //1,0을 true,false로 바꿈 
    
    cout << "미성년자?\n" << (Age >= 19) << endl;
    cout << "발급대상?\n" << (Age == 20) << endl;
    cout << "아홉수?\n" << ((Age % 10) == 9) << endl;
    
    cout << noboolalpha; //true,false를 1,0으로 바꿈

결과)

 

 

 

 

'코딩 > C++' 카테고리의 다른 글

[C++] 배열  (0) 2022.04.13
[C++] 제어문  (0) 2022.04.12
[C++] 난수 생성  (0) 2022.04.11
[C++]변수명 이름 규칙  (0) 2022.04.07
[C++]컴퓨터 정의, 데이터 타입 정리  (0) 2022.04.07