Используется для явного преобразования из одного типа в другой. Формат операции:
(тип) выражение;
Пример 3
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
5. Умножение (*), деление (/) и деление с остатком (%)
Операции умножения и деления применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для них возможно неявное преобразование к целым или вещественным типам. При этом тип результата равен «наибольшему» из типов операндов, но не менее int. Если оба операнда при делении целочисленные, то и результат тоже целочисленный.
Рассмотрим эти операции на примере.
Пример 4
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 – в противном случае. Рассмотрим операции на примере:
Пример 5
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. Логические операции: И (&&), ИЛИ (||)
Логические операции применяются к операндам логического типа.
Результат логической операции И имеет значение истина тогда и только тогда, когда оба операнда принимают значение истина.
Результат логической операции ИЛИ имеет значение истина тогда и только тогда, когда хотя бы один из операндов принимает значение истина.
Рассмотрим операции на примере:
Пример 6
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
Замечание. Фактически была построена таблица истинности для логических операций И и ИЛИ.
Условная операция
Формат: (<операнд1>)? <операнд2>: <операнд3>;
Операнд1 – это логическое выражение, которое оценивается с точки зрения его эквивалентности константам true и false. Если результат вычисления операнда1 равен true, то результатом условной операции будет значение операнда2, иначе — операнда3. Фактически условная операция является сокращенной формой условного оператора if, который будет рассмотрен позже.
Пример использования условной операции:
Пример 7
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. Выяснить, допустимы ли следующие способы записи ++(++i), (i--)--, ++(i--) и т.д. И почему.
Задание 2. Выяснить, допустимы ли следующие способы записи!(-i), -(!a). И почему.
Задание 3. Объяснить, почему операция (byte)i вместо ожидаемого значения -4 дала нам в качестве результата значение 252.
Задание 4. Выяснить, чему будет равен результат операции:
1) 1.0/0; 2) 1/0
И объяснить, как получился данный результат.
Задание 5. Выяснить, чему равен результат данного выражения:
1) i<j<k 2) true<false
И объяснить, как получился данный результат.
Задание 6. Объяснить, какое значение примет переменная t в данном фрагменте программы:
int a=10, b=3;
bool t=(a>=b && a!=2*b || a<0);
Задание 7. Изменить программу так, чтобы:
1) вычислялось наименьшее значение из двух вещественных чисел x и y;
2) если число двузначное, то на экран выводилось «Да», и «Нет» в противном случае.
static void Main()
{
int x=5; int y=10;
int max = (x > y)? x: y;
Console.WriteLine(max);
}
Задание 8. Объяснить, какие значения примут переменные t и b после выполнения данного фрагмента программы:
int a=10, b=3;
int t=(a++)-b;
int b+=t*a;
Задание 9. Вычислить значение функции при х=2,5
Задание 10 Составить процедуру расчета функции. Значения переменных задавать в диалоге
Контрольные вопросы
1. Типы данных C#
2. Категории встроенных типов данных? Чем они отличаются?
3. Особенности целочисленных форматов.
4. Типы с плавающей точкой.
5. Десятичный тип данных.
6. Символы.
7. Логический тип данных.
8. Литералы.
9. Типы констант.
10. Переменные, их типы и имена.
11. Операции, которые рассматривались в примерах