비교&관계 연산자

Jaemyeong Lee·2024년 7월 31일
0

FastCampusC++

목록 보기
11/78

비교 연산자 코드 및 주석

#include <iostream>
#include <compare>

using namespace std;

int main()
{
    {
        // Equal 연산자
        int num0 = 10, num1(10);
        if (num0 == num1)
            cout << "num0 == num1" << endl; // 출력됨
        
        // 아래의 실수들에 유의 한다.
        num0 = 10, num1 = 11;
        // if 문 내부가 11로 평가되고 11은 true로 평가되기 때문에 num0과 num1이 달라도 무조건 실행이 된다.
        if (num0 = num1)
            cout << "num0(10) = num1(11)" << endl; // 출력됨

        num0 = 0, num1 = 0;
        // if 문 내부가 0으로 평가되고 0은 false로 평가되기 때문에 num0과 num1이 같아도 실행이 안 된다.
        if (num0 = num1)
            cout << "num0(0) = num1(0)" << endl; // 출력되지 않음
    }
    {
        // Not Equal 연산자
        int num0 = 0, num1(0);
        if (num0 != num1)
            cout << "num0(0) != num1(0)" << endl; // 출력되지 않음

        num0 = 0, num1 = 1;
        if (num0 != num1)
            cout << "num0(0) != num1(1)" << endl; // 출력됨
    }
    {
        // Greater Than 연산자
        int num0 = 0, num1(0);
        if (num0 > num1)
            cout << "num0(0) > num1(0)" << endl; // 출력되지 않음

        num0 = 1, num1 = 0;
        if (num0 > num1)
            cout << "num0(1) > num1(0)" << endl; // 출력됨
    }
    {
        // Greater Than or Equal 연산자
        int num0 = 0, num1(0);
        if (num0 >= num1)
            cout << "num0(0) >= num1(0)" << endl; // 출력됨

        num0 = 1, num1 = 0;
        if (num0 >= num1)
            cout << "num0(1) >= num1(0)" << endl; // 출력됨
    }
    {
        // Less Than 연산자
        int num0 = 0, num1(0);
        if (num0 < num1)
            cout << "num0(0) < num1(0)" << endl; // 출력되지 않음

        num0 = 0, num1 = 1;
        if (num0 < num1)
            cout << "num0(0) < num1(1)" << endl; // 출력됨
    }
    {
        // Less Than or Equal 연산자
        int num0 = 0, num1(0);
        if (num0 <= num1)
            cout << "num0(0) <= num1(0)" << endl; // 출력됨

        num0 = 0, num1 = 1;
        if (num0 <= num1)
            cout << "num0(0) <= num1(1)" << endl; // 출력됨
    }
    {
        // SpaceShip 연산자
        // C++20 에서 지원. 프로젝트 속성에서 C++ 언어 표준 변경 필요
        cout.setf(ios_base::boolalpha);

        // <=> 의 결과를 0과 비교할 수 있다.
        // 0과 비교해서 0과 같으면 <=>의 좌항, 우항이 같다.
        // 0과 비교해서 0보다 크면 좌항이 우항보다 크다.
        // 0과 비교해서 0보다 작으면 좌항이 우항보다 작다.
        cout << ((1 <=> 1) == 0) << endl; // true
        cout << ((2 <=> 1) > 0) << endl; // true
        cout << ((1 <=> 2) < 0) << endl; // true

        cout << is_eq(1 <=> 1) << endl; // true
        cout << is_gt(2 <=> 1) << endl; // true
        cout << is_lt(1 <=> 2) << endl; // true
        cout << is_gteq(2 <=> 1) << endl; // true
        cout << is_lteq(1 <=> 2) << endl; // true

        cout << typeid(1 <=> 1).name() << endl; // std::strong_ordering
        cout << typeid(1 <=> 1.0).name() << endl; // std::partial_ordering
    }
}

비교 연산자 요약 표

연산자설명예시결과
==두 값이 같은지 비교num0 == num1같으면 true
!=두 값이 다른지 비교num0 != num1다르면 true
>좌항이 우항보다 큰지 비교num0 > num1크면 true
>=좌항이 우항보다 크거나 같은지 비교num0 >= num1크거나 같으면 true
<좌항이 우항보다 작은지 비교num0 < num1작으면 true
<=좌항이 우항보다 작거나 같은지 비교num0 <= num1작거나 같으면 true
<=>SpaceShip 연산자 (C++20)num0 <=> num1비교 결과 반환
is_eqSpaceShip 연산자 결과가 같은지 비교is_eq(num0 <=> num1)같으면 true
is_gtSpaceShip 연산자 결과가 큰지 비교is_gt(num0 <=> num1)크면 true
is_ltSpaceShip 연산자 결과가 작은지 비교is_lt(num0 <=> num1)작으면 true
is_gteqSpaceShip 연산자 결과가 크거나 같은지 비교is_gteq(num0 <=> num1)크거나 같으면 true
is_lteqSpaceShip 연산자 결과가 작거나 같은지 비교is_lteq(num0 <=> num1)작거나 같으면 true

주요 개념 설명

  1. Equal (==) 연산자:

    • 두 값이 같은지 비교합니다.
    • 예시: if (num0 == num1)
  2. Not Equal (!=) 연산자:

    • 두 값이 다른지 비교합니다.
    • 예시: if (num0 != num1)
  3. Greater Than (>) 연산자:

    • 좌항이 우항보다 큰지 비교합니다.
    • 예시: if (num0 > num1)
  4. Greater Than or Equal (>=) 연산자:

    • 좌항이 우항보다 크거나 같은지 비교합니다.
    • 예시: if (num0 >= num1)
  5. Less Than (<) 연산자:

    • 좌항이 우항보다 작은지 비교합니다.
    • 예시: if (num0 < num1)
  6. Less Than or Equal (<=) 연산자:

    • 좌항이 우항보다 작거나 같은지 비교합니다.
    • 예시: if (num0 <= num1)
  7. SpaceShip (<=>) 연산자 (C++20):

    • 좌항과 우항을 비교하여 비교 결과를 반환합니다.
    • 예시: auto result = num0 <=> num1;
    • 비교 결과는 std::strong_ordering, std::weak_ordering, std::partial_ordering 중 하나입니다.

SpaceShip 연산자 결과 함수

함수설명
is_eq(x)x가 0과 같으면 true
is_gt(x)x가 0보다 크면 true
is_lt(x)x가 0보다 작으면 true
is_gteq(x)x가 0보다 크거나 같으면 true
is_lteq(x)x가 0보다 작거나 같으면 true
profile
李家네_공부방

0개의 댓글