Воскресенье, 15.06.2025, 01:01
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
База языка C# [3]
В данном разделе будут статьи по базовым понятиям языка C#
Основы языка С# [22]
Раздел продолжает рассматривать основы языка C#
Задачи [2]
примеры решения задач
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Главная » Статьи » C# » Основы языка С#

Операции

Полный список операций языка С# в соответствии с их приоритетами (по убыванию приоритетов, операции с разными приоритетами разделены чертой) приведен в Приложении 1. В данном разделе мы подробно рассмотрим только часть операций, остальные операции будут вводиться по мере необходимости.
Замечание. Операции можно классифицировать по количеству операндов: унарные – воздействуют на один операнд, бинарные – воздействуют на два операнда, тернарные – воздействуют на три операнда. Некоторые символы используются для обозначения как унарных, так и бинарных операций. Например, символ «минус» используется как для обозначения унарной операции – арифметического отрицания, так и для обозначения бинарной операции вычитания. Будет ли данный символ обозначать унарную или бинарную операцию, определяется контекстом, в котором он используется.
1. Инкремент (++) и декремент(--).
Эти операции имеют две формы записи — префиксную, когда операция записывается перед операндом, и постфиксную – операция записывается после операнда. Префиксная операция инкремента (декремента) увеличивает (уменьшает) свой операнд и возвращает измененное значение как результат. Постфиксные версии инкремента и декремента возвращают первоначальное значение операнда, а затем изменяют его.
Рассмотрим эти операции на примере.

static void Main()

{

    int i = 3, j = 4;

    Console.WriteLine("{0} {1}", i, j);

    Console.WriteLine("{0} {1}", ++i, --j);

    Console.WriteLine("{0} {1}", i++, j--);

    Console.WriteLine("{0} {1}", i, j);

}

Результат работы программы:
3 4
4 3
4 3
5 2
2. Операция new.
Используется для создания нового объекта. С помощью ее можно создавать как объекты ссылочного типа, так и размерные, например:

object z = new object();

int i = new int(); // то же самое, что и int i =0;

3. Отрицание:
1. Арифметическое отрицание (-) – меняет знак операнда на противоположный.
2. Логическое отрицание (!) – определяет операцию инверсии для логического типа.
Рассмотрим эти операции на примере.

static void Main()

{

    int i = 3, j = -4;

    bool a = true, b = false;

    Console.WriteLine("{0} {1}", -i, -j);

    Console.WriteLine("{0} {1}", !a, !b);

}

Результат работы программы:
-3 4
False True
4. Явное преобразование типа.
Используется для явного преобразования из одного типа в другой. Формат операции:
(<тип>) <выражение>;
Рассмотрим эту операцию на примере.

static void Main()

{

    int i = -4;

    byte j = 4;

    int a = (int)j; //преобразование без потери точности

    byte b = (byte)i; //преобразование с потерей точности

    Console.WriteLine("{0} {1}", a, b);

}

Результат работы программы:
4 252
Замечание. В Pascal, C++ и других языках допускается неявное преобразование типов, которое в рамках предыдущего примера позволило бы записать: b=i. В этом случае происходит потеря точности вычислений, о чем компилятор либо "умалчивает", либо сообщает в виде предупреждения. Возможность неявного преобразования чревата вычислительными ошибками, которые очень трудно найти. Чтобы избежать подобных ошибок, в C# запрещены некоторые виды неявных преобразований. Более подробно преобразование типов мы рассмотрим в следующем разделе.
5. Умножение (*), деление (/) и деление с остатком (%).
Операции умножения и деления применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам. При этом тип результата равен «наибольшему» из типов операндов, но не менее int. Если оба операнда при делении целочисленные, то и результат тоже целочисленный.
Рассмотрим эти операции на примере.

static void Main()

{

    int i = 100, j = 15;

    double a = 14.2, b = 3.5;

    Console.WriteLine("{0} {1} {2}", i * j, i / j, i % j);

    Console.WriteLine("{0} {1} {2}", a * b, a / b, a % b);

}

Результат работы программы:
1500 6 10
49.7 4.05714285714286 0.1999999999999999
6. Сложение (+) и вычитание (-).
Операции сложения и вычитания применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам.
7. Операции отношения ( <, <=, >, >=, ==, !=).
Операции отношения сравнивают значения левого и правого операндов. Результат операции логического типа: true – если значения совпадают, false – в противном случае. Рассмотрим операции на примере:

static void Main()

{

    int i = 15, j = 15;

    Console.WriteLine(i < j); //меньше

    Console.WriteLine(i <= j); //меньше или равно

    Console.WriteLine(i > j); //больше

    Console.WriteLine(i >= j); //больше или равно

    Console.WriteLine(i == j); //равно

    Console.WriteLine(i != j); //не равно

}

Результат работы программы:
False
True
False
True
True
False
8. Логические операции: И (&&), ИЛИ (||).
Логические операции применяются к операндам логического типа.
Результат логической операции И имеет значение истина тогда и только тогда, когда оба операнда принимают значение истина.
Результат логической операции ИЛИ имеет значение истина тогда и только тогда, когда хотя бы один из операндов принимает значение истина.
Рассмотрим операции на примере:

static void Main()

{

    Console.WriteLine("x y x и y x или y");

    Console.WriteLine("{0} {1} {2} {3}", false, false, false && false, false || false);

    Console.WriteLine("{0} {1} {2} {3}", false, true, false && true, false || true);

    Console.WriteLine("{0} {1} {2} {3}", true, false, true && false, true || false);

    Console.WriteLine("{0} {1} {2} {3}", true, true, true && true, true || true);

}

Результат работы программы:
x y x и y x или y
False False False False
False True False True
True False False True
True True True True
Замечание. Фактически была построена таблица истинности для логических операций И и ИЛИ.
9. Условная операция.
Формат: (<операнд1>)? <операнд2> : <операнд3>;
Операнд1 – это логическое выражение, которое оценивается с точки зрения его эквивалентности константам true и false. Если результат вычисления операнда1 равен true, то результатом условной операции будет значение операнда2, иначе — операнда3. Фактически условная операция является сокращенной формой условного оператора if, который будет рассмотрен позже.
Пример использования условной операции:

static void Main()

{

    int x = 5; int y = 10;

    int max = (x > y) ? x : y;

    Console.WriteLine(max);

}

10. Операции присваивания: =, +=, -= и т.д.
Формат операции простого присваивания (=):
операнд_2 = операнд_1;
В результате выполнения этой операции вычисляется значение операнда_1, и результат записывается в операнд_2. Можно связать воедино сразу несколько операторов присваивания, записывая такие цепочки: a=b=c=100. Выражение такого вида выполняется справа налево: результатом выполнения c=100 является число 100, которое затем присваивается переменной b, результатом чего опять является 100, которое присваивается переменной a.
Кроме простой операции присваивания существуют сложные операции присваивания, например, умножение с присваиванием (*=), деление с присваиванием (/=), остаток от деления с присваиванием (%=), сложение с присваиванием (+=), вычитание с присваиванием (-=) и т.д.
В сложных операциях присваивания, например, при сложении с присваиванием, к операнду_2 прибавляется операнд_1, и результат записывается в операнд_2. То есть, выражение с += а является более компактной записью выражения с = с + а .

ПРИЛОЖЕНИЕ 1. ОПЕРАЦИИ ЯЗЫКА С#
Операции языка С# приведены в порядке убывания приоритетов. Операции с разными приоритетами разделены чертой.

Операция Описание
. Доступ к элементу
x() Вызов метода или делегата
x[] Доступ к элементу
x++ Постфиксный инкремент
x-- Постфиксный декремент
new Выделение памяти
typeof Получение типа
checked Проверяемый код
unchecked Непроверяемый код
+ Унарный плюс
- Арифметическое отрицание
! Логическое отрицание
~ Поразрядное отрицание
++x Префиксный инкремент
--x Префиксный декремент
(тип) x Преобразование типа
* Умножение
+ Сложение
- Вычитание
/ Деление
% Остаток от деления
<< Сдвиг влево
>> Сдвиг вправо
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно
is Проверка принадлежности типу
as Приведение типа
== Равно
!= Не равно
& Поразрядное И
^ Поразрядное исключающее ИЛИ
| Поразрядное ИЛИ
&& Логическое И
|| Логическое ИЛИ
? : Условная операция
= Простое присваивание
*= Умножение с присваиванием
/= Деление с присваиванием
%= Остаток от деления с присваиванием
+= Сложение с присваиванием
-= Вычитание с присваиванием
<<= Сдвиг влево с присваиванием
>>= Сдвиг вправо с присваиванием
&= Поразрядное И с присваиванием
^= Поразрядное исключающее ИЛИ с присваиванием
|= Поразрядное ИЛИ с присваиванием

 

Категория: Основы языка С# | Добавил: solowey (16.01.2016)
Просмотров: 367 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт