Явное преобразование типа

Используется для явного преобразования из одного типа в другой. Формат операции:

(тип) выражение;

 

Пример 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. Операции, которые рассматривались в примерах

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: