Операторы в C#
В этой статье вы узнаете, какие типы операторов есть в C# и как их использовать.
Операторы — это символы, которые используются для выполнения операций с операндами. Операндами могут быть переменные и/или константы.
Например, в выражении 2 + 3
, +
— это оператор, который используется для выполнения операции сложения, а 2
и 3
— операнды.
Операторы используются для управления переменными и их значениями в программе. C# поддерживает ряд операторов, разделенных по типам выполняемых ими операций.
Простой оператор присваивания
Основной оператор присваивания =
используется для присвоения значений переменным.
double x;
x = 50.05;
Здесь переменной x
присваивается значение 50.05.
Пример 1. Используем простой оператор присваивания
using System;
namespace Operator
{
class AssignmentOperator
{
public static void Main(string[] args)
{
int firstNumber, secondNumber;
// Присваиваем переменной значение константы
firstNumber = 10;
Console.WriteLine("Значение firstNumber = {0}", firstNumber);
// Присваиваем переменной значение другой переменной
secondNumber = firstNumber;
Console.WriteLine("Значение secondNumber = {0}", secondNumber);
}
}
}
Вывод:
Значение firstNumber = 10
Значение secondNumber = 10
Вы могли заметить в примере фигурные скобки {}
. Такой метод называется форматированием строк, о нем мы поговорим в другой статье. Сейчас вам достаточно знать, что {0}
заменяется на firstNumber
, следующей за строкой, а {1}
заменяется на secondNumber
.
Арифметические операторы
Арифметические операторы используются для выполнения арифметических операций: сложение, вычитание, умножение, деление и т. д.
int x = 5;
int y = 10;
int z = x + y; // z = 15
Оператор |
Название оператора |
Пример |
|
Оператор сложения. |
|
|
Оператор вычитания. |
|
|
Оператор умножения. |
|
|
Оператор деления. |
|
|
Оператор взятия остатка. |
|
Пример 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("{0} + {1} = {2}", firstNumber, secondNumber, result);
// Оператор вычитания
result = firstNumber - secondNumber;
Console.WriteLine("{0} - {1} = {2}", firstNumber, secondNumber, result)
// Оператор умножения
result = firstNumber * secondNumber;
Console.WriteLine("{0} * {1} = {2}", firstNumber, secondNumber, result);
// Оператор деления
result = firstNumber / secondNumber;
Console.WriteLine("{0} / {1} = {2}", firstNumber, secondNumber, result);
// Оператор взятия остатка
rem = num1 % num2;
Console.WriteLine("{0} % {1} = {2}", 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("{0} == {1} возвращает {2}",firstNumber, secondNumber, result);
result = (firstNumber > secondNumber);
Console.WriteLine("{0} > {1} возвращает {2}",firstNumber, secondNumber, result);
result = (firstNumber < secondNumber);
Console.WriteLine("{0} < {1} возвращает {2}",firstNumber, secondNumber, result);
result = (firstNumber >= secondNumber);
Console.WriteLine("{0} >= {1} возвращает {2}",firstNumber, secondNumber, result);
result = (firstNumber <= secondNumber);
Console.WriteLine("{0} <= {1} возвращает {2}",firstNumber, secondNumber, result);
result = (firstNumber != secondNumber);
Console.WriteLine("{0} != {1} возвращает {2}",firstNumber, secondNumber, result);
}
}
}
Вывод:
10 == 20 возвращает False
10 > 20 возвращает False
10 < 20 возвращает True
10 >= 20 возвращает False
10 <= 20 возвращает True
10 != 20 возвращает True
Логические операторы
Логические операторы используются для выполнения таких логических операций, как AND
(ИЛИ), OR
(И) и т. д. Логические операторы работают с булевыми выражениями и возвращают булевые значения true
и false
. Логические операторы нужны для принятия решений и в циклах.
Операнд 1 |
Операнд 2 |
OR ( |
AND ( |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проще говоря:
- Если один из операндов
true
, тоOR
вернетtrue
. - Если один из операндов равен
false
, операторAND
вернетfalse
.
Пример 4. Используем логические операторы
using System;
namespace Operator
{
class LogicalOperator
{
public static void Main(string[] args)
{
bool result;
int firstNumber = 10, secondNumber = 20;
// оператор ИЛИ
result = (firstNumber == secondNumber) || (firstNumber > 5);
Console.WriteLine(result);
// оператор И
result = (firstNumber == secondNumber) && (firstNumber > 5);
Console.WriteLine(result);
}
}
}
Вывод:
True
False
Унарные операторы
Унарные операторы работают только с одним операндом — это отличает их от всех остальных операторов.
Оператор |
Название оператора |
Описание |
|
Унарный плюс. |
Оставляет знак операнда таким же. |
|
Унарный минус. |
Меняет знак операнда. |
|
Инкремент. |
Увеличивает значение операнда на 1. |
|
Декремент. |
Уменьшает значение операнда на 1. |
|
Логическое отрицание. |
Инвертирует логическое значение операнда. |
Пример 5. Используем унарные операторы
using System;
namespace Operator
{
class UnaryOperator
{
public static void Main(string[] args)
{
int number = 10, result;
bool flag = true;
result = +number;
Console.WriteLine("+number = " + result);
result = -number;
Console.WriteLine("-number = " + result);
result = ++number;
Console.WriteLine("++number = " + result);
result = --number;
Console.WriteLine("--number = " + result);
Console.WriteLine("!flag = " + (!flag));
}
}
}
Вывод:
+number = 10
-number = -10
++number = 11
--number = 10
!flag = False
Операторы инкремента ++
и декремента --
могут использоваться как префикс и постфикс. Если использовать их как префикс, изменение значения переменной отображается в той же строке, а если как постфикс, изменение значения переменной отображается в следующей строке.
Пример 6. Используем инкремент в качестве префикса и постфикса
using System;
namespace Operator
{
class UnaryOperator
{
public static void Main(string[] args)
{
int number = 10;
Console.WriteLine((number++));
Console.WriteLine((number));
Console.WriteLine((++number));
Console.WriteLine((number));
}
}
}
Вывод:
10
11
12
12
Когда ++
используется после операнда, значение сначала оценивается, а затем увеличивается на 1. Следовательно, оператор Console.WriteLine((number++));
выводит 10 вместо 11. После того, как значение выведено, оно увеличивается на 1.
Если ++
используется в качестве префикса, процесс обратный. Значение сначала увеличивается, а затем выводится. Следовательно, выражение Console.WriteLine((++number));
выводит 12.
То же самое и с оператором декремента --
.
Тернарный оператор
Тернарный оператор ? : работает с тремя операндами. Это сокращение для конструкции if-then-else. Тернарный оператор можно использовать следующим образом:
переменная = условие? выражение1: выражение2;
Тернарный оператор работает вот так:
- Если выражение, указанное в условии равно true, переменной присваивается результат выражения1.
- Если же выражение равно false, переменной присваивается результат выражения2.
Пример 7. Используем тернарный оператор
using System;
namespace Operator
{
class TernaryOperator
{
public static void Main(string[] args)
{
int number = 10;
string result;
result = (number % 2 == 0)? "четное число" : "нечетное число";
Console.WriteLine("{0} это {1}", number, result);
}
}
}
Вывод:
10 это четное число
Побитовые операторы
Побитовые операторы и операторы побитового сдвига используются для выполнения манипуляций с битами.
Оператор | Название оператора |
~ | Побитовое отрицание. |
& | Побитовое И. |
| | Побитовое ИЛИ. |
^ | Побитовое исключающее ИЛИ. |
<< | Побитовый сдвиг влево. |
>> | Побитовый сдвиг вправо. |
Пример 8. Используем побитовый оператор и оператор побитового сдвига
using System;
namespace Operator
{
class BitOperator
{
public static void Main(string[] args)
{
int firstNumber = 10;
int secondNumber = 20;
int result;
result = ~firstNumber;
Console.WriteLine("~{0} = {1}", firstNumber, result);
result = firstNumber & secondNumber;
Console.WriteLine("{0} & {1} = {2}", firstNumber,secondNumber, result);
result = firstNumber | secondNumber;
Console.WriteLine("{0} | {1} = {2}", firstNumber,secondNumber, result);
result = firstNumber ^ secondNumber;
Console.WriteLine("{0} ^ {1} = {2}", firstNumber,secondNumber, result);
result = firstNumber << 2;
Console.WriteLine("{0} << 2 = {1}", firstNumber, result);
result = firstNumber >> 2;
Console.WriteLine("{0} >> 2 = {1}", firstNumber, result);
}
}
}
Вывод:
~10 = -11
10 & 20 = 0
10 | 20 = 30
10 ^ 20 = 30
10 << 2 = 40
10 >> 2 = 2
Составные операторы присваивания
Оператор |
Название оператора |
Пример |
Эквивалентно |
|
Оператор сложения и присваивания. |
|
|
|
Оператор вычитания и присваивания. |
|
|
|
Оператор умножения и присваивания. |
|
|
|
Оператор деления и присваивания. |
|
|
|
Оператор присваивания остатка. |
|
|
|
Оператор побитового И и присваивания. |
|
|
|
Оператор побитового ИЛИ и присваивания. |
|
|
|
Оператор исключающего ИЛИ и присваивания. |
|
|
|
Оператор побитового сдвига влево и присваивания. |
|
|
|
Оператор побитового сдвига вправо и присваивания. |
|
|
|
Лямбда-оператор. |
|
Возвращает |
Пример 9. Используем составные операторы присваивания
using System;
namespace Operator
{
class BitOperator
{
public static void Main(string[] args)
{
int number = 10;
number += 5;
Console.WriteLine(number);
number -= 3;
Console.WriteLine(number);
number *= 2;
Console.WriteLine(number);
number /= 3;
Console.WriteLine(number);
number %= 3;
Console.WriteLine(number);
number &= 10;
Console.WriteLine(number);
number |= 14;
Console.WriteLine(number);
number ^= 12;
Console.WriteLine(number);
number <<= 2;
Console.WriteLine(number);
number >>= 3;
Console.WriteLine(number);
}
}
}
Вывод:
15
12
24
8
2
2
14
2
8
1