Унарный оператор в C++

Unarnyj Operator V C



В C++ унарный оператор — это оператор, который работает только с одним операндом. Унарные операторы играют решающую роль в C++, позволяя манипулировать значением, связанным с единственной переменной или выражением. Эти универсальные операторы можно использовать в различных контекстах, например для увеличения или уменьшения переменной, изменения знака числового значения или выполнения логического отрицания. В этой статье рассматриваются унарные операторы в C++, рассматриваются их типы и приложения, а также приводятся многочисленные примеры для лучшего понимания.

C++ поддерживает несколько унарных операторов, каждый из которых служит уникальной цели при манипулировании переменными. Начнем с операторов увеличения и уменьшения, которые обычно используются в циклах и различных алгоритмах.

Пример 1. Операторы увеличения (++) и уменьшения (–)

Унарные операторы увеличения (++) и уменьшения (–) являются фундаментальными инструментами в C++ для изменения значения переменной путем увеличения или уменьшения его на 1 соответственно. Оператор инкремента (++) добавляет 1 к значению переменной, а оператор декремента (–) вычитает 1. Эти операторы можно применять к целочисленным переменным, переменным с плавающей запятой и указателям, обеспечивая гибкость в их использовании.







Давайте рассмотрим эти операторы на практическом примере:



#include
с использованием пространство имен стандартный ;

интервал основной ( )
{

интервал прилавок '=' 0 ;

// Оператор увеличения
расчет << 'Начальное значение: ' << прилавок << конец ;

прилавок ++ ;
расчет << 'Значение после приращения: ' << прилавок << конец ;

// Оператор уменьшения
прилавок -- ;
расчет << 'Значение после уменьшения: ' << прилавок << конец ;

возвращаться 0 ;
}

Эта простая программа на C++ включает необходимую библиотеку потоков ввода/вывода с помощью «#include ». В функции «main()» мы создаем экземпляр целочисленной переменной с именем «counter» и присваиваем ей начальное значение 0. Используя оператор «cout», мы выводим начальное значение «счетчика» на консоль, предоставляя базовый уровень для нашей демонстрации. В дальнейшем оператор инкремента (counter++) используется для увеличения значения переменной «counter» на 1.



После этой операции обновленное значение «counter» отображается с помощью другого оператора «cout». Впоследствии мы используем оператор декремента (counter—), чтобы уменьшить значение «counter» на 1. Результат впоследствии отображается на консоли. В конечном итоге программа завершается возвратом 0; оператор, который указывает на успешное выполнение.





Выходное изображение показывает начальное значение, значение после увеличения и уменьшенное значение.



Пример 2: Положительные (+) и отрицательные (-) операторы

Хотя положительный унарный оператор используется редко, отрицательный оператор имеет основополагающее значение для изменения знака переменной.

#include
С использованием пространство имен стандартный ;

интервал основной ( ) {
интервал положительное значение '=' 10 ;
интервал отрицательное значение '=' - положительное значение ;

расчет << 'Положительное значение: ' << положительное значение << конец ;
расчет << 'Отрицательное значение: ' << отрицательное значение << конец ;

возвращаться 0 ;
}

Для этого примера кода мы инициализируем две целочисленные переменные: «positiveValue» и «negativeValue». «PositiveValue» присваивается значение 10. Впоследствии мы объявляем «negativeValue» и присваиваем ему отрицание «positiveValue», используя унарный оператор минус. Этот оператор эффективно меняет знак исходного значения. Затем мы используем оператор «cout» для отображения как положительного, так и отрицательного вывода на консоли. Наконец, программа возвращает 0, что указывает на успешное завершение основной функции.

При выполнении эта программа выводит положительные и отрицательные значения.

Пример 3: Логический оператор НЕ (!)

Унарный оператор в C++, обозначаемый знаком «!» символ, известный как логический оператор НЕ. Он предназначен для инвертирования истинного значения данного выражения. Он работает с одним операндом, который обычно является логическим выражением или условием. Логическая операция НЕ дает результат «истина», когда операнд имеет значение «ложь», и дает результат «ложь», когда операнд имеет значение «истина».

Вот простой пример, демонстрирующий использование логического оператора НЕ:

#include
с использованием пространство имен стандартный ;

интервал основной ( ) {
логическое значение правда '=' истинный ;
логическое значение isFalse '=' ЛОЖЬ ;

логическое значение результатNotTrue '=' ! правда ;
логическое значение результатNotFalse '=' ! isFalse ;

расчет << 'Исходная стоимость: ' << правда << ', после НЕ: ' << результатNotTrue << конец ;
расчет << 'Исходная стоимость: ' << isFalse << ', после НЕ: ' << результатNotFalse << конец ;

возвращаться 0 ;
}

В этом примере мы объявляем две логические переменные: «isTrue» и «isFalse». Затем мы применяем логический оператор НЕ к каждой переменной, сохраняя результаты в «resultNotTrue» и «resultNotFalse» соответственно. Впоследствии программа печатает исходные значения и результаты логической операции НЕ для обеих переменных.

При выполнении этой программы мы заметим, что логический оператор НЕ меняет истинное значение «isTrue» (изначально установлено значение true), делая его ложным. Аналогично, он инвертирует истинное значение «isFalse» (первоначально false), возвращая true.

Вывод ясно иллюстрирует инверсию значений истинности, достигаемую логическим оператором НЕ.

Пример 4: Побитовый оператор НЕ (~)

Побитовый оператор НЕ (~) в C++ — это унарный оператор, который выполняет поразрядное отрицание каждого бита своего операнда. Он работает с фундаментальными типами данных, особенно с целочисленными, такими как целые числа. Результат достигается путем инвертирования каждого отдельного бита операнда, преобразования 0 в 1 и 1 в 0.

Чтобы проиллюстрировать его использование, рассмотрим следующий фрагмент кода:

#include
с использованием пространство имен стандартный ;

интервал основной ( ) {
интервал исходное значение '=' 5 ;

интервал результатПобитовыйНет '=' ~originalValue ;

расчет << 'Исходная стоимость: ' << исходное значение << ', после побитового НЕ: ' << результатПобитовыйНет << конец ;

возвращаться 0 ;
}

В этом примере мы объявляем целочисленную переменную «originalValue» со значением «5». Далее мы используем побитовый оператор НЕ (~) для этой переменной. Результат этой переменной сохраняется в «resultBitwiseNot». Затем программа печатает исходное значение и результат после побитовой операции НЕ, используя оператор «cout».

Когда мы запустим эту программу, мы увидим, что побитовый оператор НЕ инвертирует каждый бит двоичного представления «originalValue», в результате чего получается новое значение.

Пример 5: Операторы адреса и косвенности

Оператор адреса, обозначаемый символом «&», служит для получения местоположения переменной в памяти. Он возвращает указатель на переменную, что обеспечивает косвенный доступ к ее значению. Оператор косвенного обращения или разыменования (*) получает значение, хранящееся в ячейке памяти, указанной указателем. Он обеспечивает возможность косвенной работы с фактическими данными через указатель.

Разберем концепцию на примере:

#include
с использованием пространство имен стандартный ;

интервал основной ( ) {
интервал ценить '=' 99 ;

расчет << 'Исходная стоимость: ' << ценить << конец ;

интервал * ПТР '=' & ценить ;
расчет << 'Адрес памяти: ' << ПТР << конец ;

интервал полученное значение '=' * ПТР ;
расчет << 'Полученное значение: ' << полученное значение << конец ;

возвращаться 0 ;
}

Этот код иллюстрирует использование операторов адреса и косвенности. Сначала целочисленная переменная с именем «value» инициализируется значением 99. Затем исходное значение «value» выводится на консоль. Затем объявляется переменная-указатель «ptr», и оператор адреса (&) используется для присвоения адреса памяти «value» для «ptr». Затем программа выводит этот адрес памяти, демонстрируя базовую операцию оператора «адрес».

После этого объявляется новая целочисленная переменная «retievedValue», и используется оператор косвенного обращения (*) для извлечения значения, хранящегося по адресу памяти, указанному «ptr». Полученное значение затем выводится на консоль.

Заключение

В этой статье представлено всестороннее исследование унарных операторов в C++. Мы начали с разделения унарных операторов на различные типы, включая арифметические, логические, побитовые, а также операторы, связанные с адресом и косвенностью. Для демонстрации полезного применения этих операторов были приведены примеры реальных ситуаций. Эти операторы играют ключевую роль в программировании на C++, что позволяет разработчикам эффективно работать с указателями и управлять памятью.