C++의 단항 연산자

C Ui Danhang Yeonsanja



C++에서 단항 연산자는 단일 피연산자에만 작동하는 연산자입니다. 단항 연산자는 단수 변수나 표현식과 관련된 값을 조작할 수 있게 함으로써 C++에서 중요한 역할을 합니다. 이러한 다목적 연산자는 변수 증가 또는 감소, 숫자 값의 부호 변경, 논리적 부정 수행 등 다양한 상황에서 사용될 수 있습니다. 이 문서에서는 유형과 응용 프로그램을 다루고 더 나은 이해를 위해 여러 예제를 제공하여 C++의 단항 연산자를 살펴봅니다.

C++는 여러 단항 연산자를 지원하며, 각 연산자는 변수를 조작하는 데 있어 고유한 목적을 수행합니다. 루프와 다양한 알고리즘에서 일반적으로 사용되는 증가 및 감소 연산자부터 시작해 보겠습니다.

예제 1: 증가(++) 및 감소(-) 연산자

증가(++) 및 감소(-) 단항 연산자는 변수 값을 각각 1씩 늘리거나 줄여서 수정하는 C++의 기본 도구입니다. 증가 연산자(++)는 변수 값에 1을 더하고, 감소 연산자(-)는 1을 뺍니다. 이러한 연산자는 정수, 부동 소수점 및 포인터 변수에 적용할 수 있어 사용법이 유연합니다.







실제 예를 통해 이러한 연산자를 살펴보겠습니다.



#include
사용하여 네임스페이스 성병 ;

정수 기본 ( )
{

정수 카운터 = 0 ;

// 증분 연산자
시합 << '초기 값: ' << 카운터 << ;

카운터 ++ ;
시합 << '증가 후 값: ' << 카운터 << ;

// 감소 연산자
카운터 -- ;
시합 << '감소 후 값: ' << 카운터 << ;

반품 0 ;
}

이 간단한 C++ 프로그램에는 '#include '과 함께 필요한 입출력 스트림 라이브러리가 포함되어 있습니다. 'main()' 함수 내에서 'counter'라는 정수 변수를 인스턴스화하고 초기 값 0으로 할당합니다. 'cout' 문을 사용하여 'counter'의 초기 값을 콘솔에 인쇄합니다. 우리 시연의 기준선입니다. 앞으로는 증가 연산자(counter++)를 사용하여 '카운터' 변수 값을 1만큼 올립니다.



이 작업 후에 업데이트된 'counter' 값은 또 다른 'cout' 문을 사용하여 표시됩니다. 그런 다음 감소 연산자(counter—)를 사용하여 'counter' 값을 1만큼 감소시킵니다. 결과는 이후 콘솔에 표시됩니다. 궁극적으로 프로그램은 'return 0'으로 끝납니다. 성공적인 실행을 나타내는 명령문입니다.





출력 이미지에는 초기 값, 증가 후 값, 감소 값이 표시됩니다.



예 2: 양수(+) 및 음수(-) 연산자

양의 단항 연산자는 거의 사용되지 않지만 음의 연산자는 변수의 부호를 변경하는 데 기본입니다.

#include
사용 네임스페이스 성병 ;

정수 기본 ( ) {
정수 양수값 = 10 ;
정수 음수값 = - 양수값 ;

시합 << '양수 값: ' << 양수값 << ;
시합 << '음수 값: ' << 음수값 << ;

반품 0 ;
}

이 예제 코드에서는 'PositiveValue'와 'negativeValue'라는 두 개의 정수 변수를 초기화합니다. 'PositiveValue'에는 값 10이 할당됩니다. 이어서 'negativeValue'를 선언하고 단항 빼기 연산자를 사용하여 'PositiveValue'의 부정으로 할당합니다. 이 연산자는 원래 값의 부호를 효과적으로 변경합니다. 그런 다음 'cout' 문을 활용하여 콘솔에 긍정적인 출력과 부정적인 출력을 모두 표시합니다. 마지막으로 프로그램은 주 기능이 성공적으로 완료되었음을 나타내는 0을 반환합니다.

이 프로그램을 실행하면 양수 값과 음수 값이 출력됩니다.

예제 3: 논리 NOT(!) 연산자

C++의 단항 연산자는 '!'로 표시됩니다. 기호는 논리 NOT 연산자로 알려져 있습니다. 주어진 표현의 진리값을 반전시키도록 설계되었습니다. 이는 일반적으로 논리 표현식이나 조건인 단일 피연산자에 대해 작동합니다. 논리적 NOT 연산은 피연산자가 'false'이면 'true' 결과를 생성하고 피연산자가 'true'이면 'false' 결과를 생성합니다.

다음은 논리적 NOT 연산자의 사용법을 보여주는 간단한 예입니다.

#include
사용하여 네임스페이스 성병 ;

정수 기본 ( ) {
부울 사실이다 = 진실 ;
부울 거짓이다 = 거짓 ;

부울 결과가참이 아님 = ! 사실이다 ;
부울 결과가 거짓이 아님 = ! 거짓이다 ;

시합 << '원래 값: ' << 사실이다 << ', NOT 이후: ' << 결과가참이 아님 << ;
시합 << '원래 값: ' << 거짓이다 << ', NOT 이후: ' << 결과가 거짓이 아님 << ;

반품 0 ;
}

이 예에서는 'isTrue'와 'isFalse'라는 두 개의 부울 변수를 선언합니다. 그런 다음 각 변수에 논리 NOT 연산자를 적용하여 결과를 각각 'resultNotTrue' 및 'resultNotFalse'에 저장합니다. 이후 프로그램은 원래 값과 두 변수 모두에 대한 논리적 NOT 연산의 결과를 인쇄합니다.

이 프로그램을 실행하면 논리 NOT 연산자가 'isTrue'(초기에는 true로 설정됨)의 진리값을 뒤집어서 false로 만드는 것을 알 수 있습니다. 마찬가지로, 'isFalse'(원래는 false)의 진리값을 반전하여 true를 생성합니다.

출력은 논리 NOT 연산자에 의해 달성된 진리값의 반전을 명확하게 보여줍니다.

예제 4: 비트 NOT(~) 연산자

C++의 비트 NOT 연산자(~)는 피연산자의 각 비트에 대한 비트 부정을 수행하는 단항 연산자입니다. 이는 기본 데이터 유형, 특히 정수와 같은 정수 유형으로 작동합니다. 결과는 피연산자의 모든 개별 비트를 반전시켜 0을 1로, 1을 0으로 변환함으로써 달성됩니다.

사용법을 설명하려면 다음 코드 조각을 고려하십시오.

#include
사용하여 네임스페이스 성병 ;

정수 기본 ( ) {
정수 원래 값 = 5 ;

정수 resultBitwiseNot = ~원래 값 ;

시합 << '원래 값: ' << 원래 값 << ', Bitwise NOT 이후: ' << resultBitwiseNot << ;

반품 0 ;
}

이 예에서는 값이 '5'인 'originalValue' 정수 변수를 선언합니다. 다음으로 이 변수에 대해 비트 NOT 연산자(~)를 활용합니다. 이 변수의 결과는 'resultBitwiseNot'에 저장됩니다. 그런 다음 프로그램은 'cout' 문을 활용하여 비트별 NOT 연산 이후의 원래 값과 결과를 인쇄합니다.

이 프로그램을 실행하면 비트별 NOT 연산자가 'originalValue'의 이진 표현의 각 비트를 반전시켜 새로운 값을 생성하는 것을 볼 수 있습니다.

예제 5: 주소 및 간접 연산자

'&' 기호로 표시된 주소 연산자는 변수의 메모리 위치를 검색하는 목적으로 사용됩니다. 해당 값에 간접적으로 액세스할 수 있는 변수에 대한 포인터를 반환합니다. 간접 참조 또는 역참조 연산자(*)는 포인터로 지정된 메모리 위치에 저장된 값을 가져옵니다. 포인터를 통해 간접적으로 실제 데이터로 작업할 수 있는 방법을 제공합니다.

예를 들어 개념을 이해해 보겠습니다.

#include
사용하여 네임스페이스 성병 ;

정수 기본 ( ) {
정수 = 99 ;

시합 << '원래 값: ' << << ;

정수 * ptr = & ;
시합 << '메모리 주소: ' << ptr << ;

정수 검색된 값 = * ptr ;
시합 << '검색된 값: ' << 검색된 값 << ;

반품 0 ;
}

이 코드는 주소 및 간접 연산자의 활용을 보여줍니다. 먼저 'value'라는 정수 변수가 값 99로 초기화됩니다. 그런 다음 'value'의 원래 값이 콘솔에 출력됩니다. 이어서 'ptr' 포인터 변수를 선언하고 주소 연산자(&)를 사용하여 'value'의 메모리 주소를 'ptr'에 할당합니다. 그런 다음 프로그램은 이 메모리 주소를 출력하여 '주소' 연산자의 기본 작업을 보여줍니다.

그 후, 'retrievedValue'라는 새로운 정수 변수가 선언되고, 'ptr'이 가리키는 메모리 주소에 저장된 값을 검색하기 위해 간접 연산자(*)가 사용됩니다. 그러면 검색된 값이 콘솔에 출력됩니다.

결론

이 기사에서는 C++의 단항 연산자에 대한 포괄적인 탐색을 제공했습니다. 우리는 단항 연산자를 산술, 논리, 비트, 주소 및 간접 관련 연산자를 포함한 다양한 유형으로 분류하는 것부터 시작했습니다. 이러한 연산자의 유용한 적용을 보여주기 위해 실제 상황을 예시했습니다. 이러한 연산자는 개발자가 포인터를 효율적으로 사용하고 메모리를 관리할 수 있도록 C++ 프로그래밍에서 중추적인 역할을 합니다.