Язык си шарп операторы

Операторы в C#

Операторы — это символы, которые используются для выполнения операций с операндами. Операндами могут быть переменные и/или константы.

Например, в выражении 2 + 3 , + — это оператор, который используется для выполнения операции сложения, а 2 и 3 — операнды.

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

Простой оператор присваивания

Основной оператор присваивания = используется для присвоения значений переменным.

Здесь переменной x присваивается значение 50.05.

Пример 1. Используем простой оператор присваивания

using System; namespace Operator < class AssignmentOperator < public static void Main(string[] args) < int firstNumber, secondNumber; // Присваиваем переменной значение константы firstNumber = 10; Console.WriteLine("Значение firstNumber = ", firstNumber); // Присваиваем переменной значение другой переменной secondNumber = firstNumber; Console.WriteLine("Значение secondNumber = ", secondNumber); > > > 
Значение firstNumber = 10
Значение secondNumber = 10

Вы могли заметить в примере фигурные скобки <> . Такой метод называется форматированием строк, о нем мы поговорим в другой статье. Сейчас вам достаточно знать, что заменяется на firstNumber , следующей за строкой, а заменяется на secondNumber .

Арифметические операторы

Арифметические операторы используются для выполнения арифметических операций: сложение, вычитание, умножение, деление и т. д.

int x = 5; int y = 10; int z = x + y; // z = 15

Название оператора

Читайте также:  Python string with parameters

Пример 2. Используем арифметические операторы

using System; namespace Operator < class ArithmeticOperator < public static void Main(string[] args) < double firstNumber = 14.40, secondNumber = 4.60, result; int num1 = 26, num2 = 4, rem; // Оператор сложения result = firstNumber + secondNumber; Console.WriteLine("+ = ", firstNumber, secondNumber, result); // Оператор вычитания result = firstNumber - secondNumber; Console.WriteLine(" - = ", firstNumber, secondNumber, result) // Оператор умножения result = firstNumber * secondNumber; Console.WriteLine(" * = ", firstNumber, secondNumber, result); // Оператор деления result = firstNumber / secondNumber; Console.WriteLine(" / = ", firstNumber, secondNumber, result); // Оператор взятия остатка rem = num1 % num2; Console.WriteLine(" % = ", num1, num2, rem); > > >
14.4 + 4.6 = 19
14.4 - 4.6 = 9.8
14.4 * 4.6 = 66.24
14.4 / 4.6 = 3.1304347826087
26 % 4 = 2

Операторы сравнения

Операторы сравнения (они же — операторы отношения) используются для проверки связи между двумя операндами. Если сравнение истинно, результат будет true , иначе — false . Операторы отношения обычно используются в условиях и циклах.

Название оператора

Пример 3. Используем операторы сравнения

using System; namespace Operator < class RelationalOperator < public static void Main(string[] args) < bool result; int firstNumber = 10, secondNumber = 20; result = (firstNumber==secondNumber); Console.WriteLine("== возвращает ",firstNumber, secondNumber, result); result = (firstNumber > secondNumber); Console.WriteLine(" > возвращает ",firstNumber, secondNumber, result); result = (firstNumber < secondNumber); Console.WriteLine(" < возвращает ",firstNumber, secondNumber, result); result = (firstNumber >= secondNumber); Console.WriteLine(" >= возвращает ",firstNumber, secondNumber, result); result = (firstNumber <= secondNumber); Console.WriteLine(" <= возвращает ",firstNumber, secondNumber, result); result = (firstNumber != secondNumber); Console.WriteLine(" != возвращает ",firstNumber, secondNumber, result); > > > 
10 == 20 возвращает False
10 > 20 возвращает False
10 < 20 возвращает True
10 >= 20 возвращает False
10 10 != 20 возвращает True

Логические операторы

Логические операторы используются для выполнения таких логических операций, как AND (ИЛИ), OR (И) и т. д. Логические операторы работают с булевыми выражениями и возвращают булевые значения true и false . Логические операторы нужны для принятия решений и в циклах.

Источник

Логические операторы — AND, OR, NOT, XOR

Логические логические операторы выполняют логические операции с логическими операндами. Операторы включают унарное логическое отрицание ( ! ), двоичное логическое И ( & ), ИЛИ () и | исключающее ИЛИ ( ^ ), а также двоичное условное логическое И ( && ) и ИЛИ ( || ).

  • Унарный ! (логическое отрицание) оператор.
  • Бинарные & (логическое И), | (логическое ИЛИ), а также ^ (логическое исключающее ИЛИ) операторы. Эти операторы всегда обрабатывают оба операнда.
  • Бинарные && (условное логическое И) и || (условное логическое ИЛИ) операторы. Эти операторы вычисляют правый операнд, только если это необходимо.

Для операндов целочисленных типов операторы & , | и ^ выполняют побитовые логические операции. Дополнительные сведения см. в разделе Побитовые операторы и операторы сдвига.

Оператор логического отрицания !

Унарный префиксный оператор ! выполняет логическое отрицание операнда, возвращая true , если операнд имеет значение false , и false , если операнд имеет значение true .

bool passed = false; Console.WriteLine(!passed); // output: True Console.WriteLine(!true); // output: False 

Оператор логического И &

Оператор & вычисляет логическое И для всех своих операндов. Результат операции x & y принимает значение true , если оба оператора x и y имеют значение true . В противном случае результат будет false .

Оператор & вычисляет оба операнда, даже если левый операнд имеет значение false . При этом операция должна вернуть значение false , независимо от значения правого операнда.

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

bool SecondOperand() < Console.WriteLine("Second operand is evaluated."); return true; >bool a = false & SecondOperand(); Console.WriteLine(a); // Output: // Second operand is evaluated. // False bool b = true & SecondOperand(); Console.WriteLine(b); // Output: // Second operand is evaluated. // True 

Условный логический оператор && AND также вычисляет логическое И своих операндов, но не вычисляет правый операнд, если левый операнд имеет значение false .

Для операндов целочисленных типов оператор & вычисляет побитовое логическое И своих операндов. Унарный оператор & является оператором AddressOf.

Оператор логического исключения ИЛИ ^

Оператор ^ вычисляет логическое исключение ИЛИ для всех своих операндов, возвращая true для x ^ y , если x имеет значение true и y имеет значение false или x имеет значение false и y имеет значение true . В противном случае результат будет false . То есть для bool операндов оператор вычисляет тот же результат, ^ что и оператор != неравенства.

Console.WriteLine(true ^ true); // output: False Console.WriteLine(true ^ false); // output: True Console.WriteLine(false ^ true); // output: True Console.WriteLine(false ^ false); // output: False 

Для операндов целочисленных типов оператор ^ вычисляет побитовое исключающее ИЛИ своих операндов.

Оператор логического ИЛИ |

Оператор | вычисляет логическое ИЛИ для всех своих операндов. Результат операции x | y принимает значение true , если хотя бы один из операторов x или y имеет значение true . В противном случае результат будет false .

Оператор | вычисляет оба операнда, даже если левый операнд имеет значение true . При этом операция должна вернуть значение true , независимо от значения правого операнда.

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

bool SecondOperand() < Console.WriteLine("Second operand is evaluated."); return true; >bool a = true | SecondOperand(); Console.WriteLine(a); // Output: // Second operand is evaluated. // True bool b = false | SecondOperand(); Console.WriteLine(b); // Output: // Second operand is evaluated. // True 

Условный логический оператор || OR также вычисляет логическое ИЛИ своих операндов, но не вычисляет правый операнд, если левый операнд имеет значение true .

Для операндов целочисленных типов оператор | вычисляет побитовое логическое ИЛИ своих операндов.

Условный оператор логического И &&

Условный оператор логического И && (оператор короткого замыкания) вычисляет логическое И для своих операндов. Результат операции x && y принимает значение true , если оба оператора x и y имеют значение true . В противном случае результат будет false . Если x имеет значение false , y не вычисляется.

В следующем примере правый операнд оператора && является вызовом метода, который не выполняется, если левый операнд имеет значение false :

bool SecondOperand() < Console.WriteLine("Second operand is evaluated."); return true; >bool a = false && SecondOperand(); Console.WriteLine(a); // Output: // False bool b = true && SecondOperand(); Console.WriteLine(b); // Output: // Second operand is evaluated. // True 

Оператор & логического И также вычисляет логические И своих операндов, но всегда вычисляет оба операнда.

Условный оператор логического ИЛИ ||

Условный оператор логического ИЛИ || (оператор короткого замыкания) вычисляет логическое ИЛИ для своих операндов. Результат операции x || y принимает значение true , если хотя бы один из операторов x или y имеет значение true . В противном случае результат будет false . Если x имеет значение true , y не вычисляется.

В следующем примере правый операнд оператора || является вызовом метода, который не выполняется, если левый операнд имеет значение true :

bool SecondOperand() < Console.WriteLine("Second operand is evaluated."); return true; >bool a = true || SecondOperand(); Console.WriteLine(a); // Output: // True bool b = false || SecondOperand(); Console.WriteLine(b); // Output: // Second operand is evaluated. // True 

Оператор | логического ИЛИ также вычисляет логические ИЛИ своих операндов, но всегда вычисляет оба операнда.

Операторы, допускающие логическое значение NULL

Для операндов bool? операторы & (логическое И) и | (логическое ИЛИ) поддерживают следующую логику с тремя значениями:

  • Оператор & возвращает true только в том случае, если оба операнда имеют значение true . Если x или y имеет значение false , оператор x & y возвращает false (даже если другой операнд имеет значение null ). В противном случае выражение x & y будет иметь значение null .
  • Оператор | возвращает false только в том случае, если оба операнда имеют значение false . Если x или y имеет значение true , оператор x | y возвращает true (даже если другой операнд имеет значение null ). В противном случае выражение x | y будет иметь значение null .

Эта семантика описывается в следующей таблице:

x y x&y x|y
Да true true true
true false false true
true null null true
false true false true
false false false false
false null false null
null true null true
null false false null
null null null null

Поведение этих операторов отличается от типичного поведения операторов, допускающих значение NULL. Как правило, оператор, определенный для операндов типа значения, можно также использовать с операндами соответствующего типа значения, допускающего значение NULL. Такой оператор возвращает null , если какой-либо из операндов имеет значение null . При этом операторы & и | могут возвращать отличное от NULL значение, даже если один из операндов имеет значение null . См. подробнее о поведении операторов, допускающих значение NULL, в разделе Операторы с нулификацией в статье Типы, допускающие значение NULL.

Вы также можете также использовать операторы ! и ^ с операндами bool? , как показано в следующем примере:

bool? test = null; Display(!test); // output: null Display(test ^ false); // output: null Display(test ^ null); // output: null Display(true ^ null); // output: null void Display(bool? b) => Console.WriteLine(b is null ? "null" : b.Value.ToString()); 

Условные логические операторы && и || не поддерживают операнды типа bool? .

Составное присваивание

Для бинарного оператора op выражение составного присваивания в форме

за исключением того, что x вычисляется только один раз.

Операторы & , | и ^ поддерживают составное присваивание, как показано в следующем примере:

bool test = true; test &= false; Console.WriteLine(test); // output: False test |= true; Console.WriteLine(test); // output: True test ^= false; Console.WriteLine(test); // output: True 

Условные логические операторы && и || не поддерживают составное присваивание.

Приоритет операторов

В следующем списке перечислены логические операторы в порядке убывания приоритета:

  • Оператор логического отрицания !
  • Оператор логического И &
  • Оператор логического исключающего ИЛИ ^
  • Оператор логического ИЛИ |
  • Условный оператор логического И &&
  • Условный оператор логического ИЛИ ||

Порядок вычисления, определяемый приоритетом операторов, можно изменить с помощью скобок ( () ).

Console.WriteLine(true | true & false); // output: True Console.WriteLine((true | true) & false); // output: False bool Operand(string name, bool value) < Console.WriteLine($"Operand is evaluated."); return value; > var byDefaultPrecedence = Operand("A", true) || Operand("B", true) && Operand("C", false); Console.WriteLine(byDefaultPrecedence); // Output: // Operand A is evaluated. // True var changedOrder = (Operand("A", true) || Operand("B", true)) && Operand("C", false); Console.WriteLine(changedOrder); // Output: // Operand A is evaluated. // Operand C is evaluated. // False 

Полный список операторов C#, упорядоченный по уровню приоритета, можно найти в разделе Приоритет операторов статьи Операторы C#.

Возможность перегрузки оператора

Определяемый пользователем тип может перегружать операторы ! , & , | и ^ . При перегрузке бинарного оператора соответствующий оператор составного присваивания также неявно перегружается. Явная перегрузка составного оператора присваивания для пользовательского типа невозможна.

Определяемый пользователем тип не может перегружать условные логические операторы && и || . При этом, если определяемый пользователем тип каким-либо образом перегружает операторы true и false и операторы & и | , операция && или || может быть применена для операндов этого типа. Дополнительные сведения см. в разделе Пользовательские условные логические операторы в Спецификации языка C#.

Спецификация языка C#

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:

См. также

Источник

Оцените статью