Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 단항 연산자 완벽 정리: 종류, 특징, 사용 예제까지 한눈에

단항 연산자(Unary Operator)란 하나의 피연산자만을 대상으로 작용하여 새로운 값을 만들어내는 연산자를 말합니다. C++에서 사용되는 대표적인 단항 연산자는 다음과 같습니다.

C++의 주요 단항 연산자

역참조 연산자 (*)

포인터 변수에 작용하며, 포인터가 가리키는 주소에 저장된 값에 해당하는 l-value를 반환합니다. 이 과정을 흔히 '포인터 역참조(dereferencing)'라고 부릅니다.

주소 연산자 (&)

피연산자의 메모리 주소를 가져오는 연산자입니다. 피연산자는 함수 지정자이거나, 비트 필드(bit-field)가 아니며 register 저장소 클래스 지정자로 선언되지 않은 객체를 나타내는 l-value여야 합니다.

단항 플러스 연산자 (+)

피연산자의 값을 그대로 반환합니다. 피연산자는 반드시 산술(arithmetic) 타입이어야 합니다.

단항 마이너스 연산자 (-)

피연산자의 부호를 반전시키는 연산자입니다. 피연산자는 어떤 산술 타입이든 가능하며, 연산 결과는 l-value가 아닙니다.

논리 부정 연산자 (!)

피연산자의 진릿값을 뒤집는 연산자입니다. 피연산자는 산술 타입 또는 포인터 타입(혹은 이들 타입으로 평가되는 표현식)이어야 하며, 연산 시 암묵적으로 bool 타입으로 변환됩니다.

1의 보수 연산자 (~)

'비트별 보수(Bitwise Complement)' 또는 '비트별 NOT' 연산자라고도 불리며, 피연산자의 각 비트를 반전시킨 1의 보수를 생성합니다. 피연산자는 정수형(integral type)이어야 합니다.

전위 증가 연산자 (++)

피연산자에 1을 더하며, 증가된 값이 곧 표현식의 결과가 됩니다. 피연산자는 const가 아닌 l-value여야 하고, 결과 역시 피연산자와 같은 타입의 l-value입니다.

전위 감소 연산자 (--)

피연산자에서 1을 빼며, 감소된 값이 표현식의 결과가 됩니다. 피연산자는 const가 아닌 l-value여야 하고, 결과 역시 피연산자와 같은 타입의 l-value입니다.

형 변환 연산자 ()

특정 상황에서 객체의 타입을 명시적으로 변환할 수 있게 해주는 방법입니다. 형 변환이 수행된 후에는 컴파일러가 해당 표현식을 지정한 타입(type-name)으로 취급합니다.

sizeof 연산자

컴파일 시간(compile time)에 피연산자의 크기를 계산할 수 있는 단항 연산자입니다.

new 연산자

메모리를 동적으로 할당할 때 사용되는 메모리 할당 연산자입니다.

delete 연산자

동적으로 할당된 메모리를 해제할 때 사용되는 메모리 해제 연산자입니다.

결합 방향(Associativity)

이러한 단항 연산자들은 모두 오른쪽에서 왼쪽으로 결합(right-to-left associativity)됩니다. 또한 단항 표현식은 일반적으로 후위(postfix) 표현식이나 기본(primary) 표현식 앞에 위치하는 구문 형태를 띱니다.

예제 코드

단항 마이너스(-) 연산자와 형 변환() 연산자의 실제 사용 예를 살펴보겠습니다.

#include<iostream>
using namespace std;
int main() {
    int x;
    float y = 1.23;

    x = (int) y;   // float을 int로 형 변환
    x = -x;        // 단항 마이너스로 부호 반전

    cout << x;
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

-1

float 타입 변수 y(1.23)가 int로 형 변환되어 1이 되고, 단항 마이너스 연산자에 의해 -1이 최종 출력되는 것을 확인할 수 있습니다.