Выражения и преобразование типов

Лекция 3. Операции

Полный перечень операций языка С# в согласовании с их ценностями (по убыванию ценностей, операции с различными ценностями разбиты чертой) приведен в приложении 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

Задание.Выясните, допустимы ли последующие методы записи
++(++i), (i--)--, ++(i--) и т.д. И почему Выражения и преобразование типов.

Замечание.Префиксная версия просит значительно меньше действий: она изменяет значение переменной и запоминает итог в ту же переменную. Постфиксная операция должна раздельно сохранить начальное значение, чтоб потом возвратить его как итог. Для сложных типов подобные дополнительные деяния возможно окажутся трудоемки. Потому постфиксную форму имеет смысл использовать только по мере Выражения и преобразование типов надобности.

  1. Операция new.Употребляется для сотворения нового объекта. При помощи ее можно создавать как объекты ссылочного типа, так и размерные, к примеру:

3. object z=new object();

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

  1. Отрицание:

Разглядим эти операции на примере.

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

Задание.Выясните, допустимы ли последующие методы записи !(-i), -(!a). И почему.

  1. Очевидное преобразование типа.Употребляется Выражения и преобразование типов для очевидного преобразования из 1-го типа в другой. Формат операции:

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

Разглядим эту операцию на примере.

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

Задание.Растолкуйте Выражения и преобразование типов, почему операция (byte)i заместо ожидаемого значения -4 отдала нам в качестве результата значение 252.

  1. Умножение (*), деление (/) и деление с остатком (%).Операции умножения и деления применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для их может быть неявное преобразование к целым либо вещественным типам. При Выражения и преобразование типов всем этом тип результата равен "большему" из типов операндов, но более 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

Задание.Выясните, чему будет равен итог операции:

И растолкуйте, как вышел данный итог.

  1. Сложение (+) и вычитание (-). Операции сложения и вычитания применимы для целочисленных и вещественных типов данных. Для других типов эти операции применимы, если для их может быть неявное преобразование к целым либо Выражения и преобразование типов вещественным типам.
  2. Операции дела ( <, , >=, ==, !=). Операции дела ассоциируют значения левого и правого операндов. Итог операции логического типа: true - если значения совпадают, false - в неприятном случае. Разглядим операции на примере:
static void Main() { int i = 15, j = 15; Console.WriteLine(i=j); //больше либо равно Console.WriteLine(i==j); //равно Console.WriteLine(i!=j); //не Выражения и преобразование типов равно } Итог работы программки: False True False True True False
  1. Задание.Выясните, чему равен итог данного выражения:

И растолкуйте, как вышел данный итог.

  1. Логические операции: И (&&), Либо (||).

Логические операции используются к операндам логического типа.

Итог логической операции И имеет значение правда и тогда только тогда, когда Выражения и преобразование типов оба операнда принимают значение правда.

Итог логической операции Либо имеет значение правда и тогда только тогда, когда хотя бы один из операндов воспринимает значение правда.

Разглядим операции на примере:

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

Замечание. Практически была построена Выражения и преобразование типов таблица истинности для логических операций И и Либо.

Задание.Растолкуйте, какое значение воспримет переменная t в данном куске программки: int a=10, b=3; bool t=(a>=b && a!=2*b || a<0);

  1. Условная операция.

Формат: ()? : ;

Операнд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);

}

Задание.Измените Выражения и преобразование типов программку так, чтоб:

  1. Операции присваивания: =, +=, -= и т.д.

Формат операции обычного присваивания (=):

операнд_2 = операнд_1;

В итоге выполнения этой операции рассчитывается значение операнда_1, и итог Выражения и преобразование типов записывается в операнд_2. Может быть связать воедино сходу несколько операторов присваивания, записывая такие цепочки: a=b=c=100. Выражение такового вида производится справа влево: результатом выполнения c=100 является число 100, которое потом присваивается переменной b, результатом чего снова является 100, которое присваивается переменной a.

Не считая обычной операции присваивания есть сложные операции присваивания Выражения и преобразование типов, к примеру, умножение с присваиванием (*=), деление с присваиванием (/=), остаток от деления с присваиванием (%=), сложение с присваиванием (+=), вычитание с присваиванием (-=) и т.д.

В сложных операциях присваивания, к примеру, при сложении с присваиванием, к операнду_2 прибавляется операнд_1, и итог записывается в операнд_2. Другими словами, выражение с += а является более малогабаритной Выражения и преобразование типов записью выражения с = с + а . Не считая того, сложные операции присваивания позволяют сгенерировать более действенный код, за счет того, что в обычной операции присваивания для хранения значения правого операнда создается временная переменная, а в сложных операциях присваивания значение правого операнда сходу записывается в левый операнд.

Задание.Растолкуйте, какие значения Выражения и преобразование типов воспримут переменные t и b после выполнения данного куска программки: int a=10, b=3; int t=(a++)-b; b+=t*a;

Рассмотренные операции приведены с учетом убывания приоритета. Если в одном выражении соседствуют операции 1-го приоритета, то операции присваивания и условная операции производятся справа влево, а другие напротив. Если нужно поменять порядок Выражения и преобразование типов выполнения операций, то в выражении нужно поставить круглые скобки.

Выражения и преобразование типов

Выражение - это синтаксическая единица языка, определяющая метод вычисления некого значения. Выражения состоят из операндов, операций и скобок. Каждый операнд является в свою очередь выражением либо одним из его личных случаев - константой, переменной либо функций Выражения и преобразование типов.

Замечание. Перечень математических функции, реализованных в С# приведен в приложении 2.

Примеры выражений:

(а + 0.12)/6

х && у || !z

(t * Math.Sin(x)-l.05e4)/((2 * k + 2) * (2 * k + 3))

Операции производятся в согласовании с ценностями (см. приложение 1). Для конфигурации порядка выполнения операций употребляются круглые скобки. Если в одном выражении записано несколько операций схожего приоритета, то унарные операции, условная операция Выражения и преобразование типов и операции присваивания производятся справа влево, другие - слева вправо. К примеру,

а = b = с значит a=(b=c),

a+b+c значит (а + b) + с.

Задания

  1. Укажите последовательность выполнения операций в данном выражении:

(x*x+Math.Sin(x+1))/x-2.

  1. Запишите данное математическое выражение по правилам языка С#:

Итог вычисления выражения Выражения и преобразование типов характеризуется значением и типом. К примеру, если а и b - переменные целого типа и описаны так:

int а = 2, b = 5;

то выражение а + b имеет значение 7 и тип int.

В выражение могут заходить операнды разных типов. Если операнды имеют однообразный тип, то итог операции будет иметь тот же тип Выражения и преобразование типов. Если операнды различного типа, то перед вычислениями производятся преобразования более маленьких типов в более длинноватые для сохранения значимости и точности. Иерархия типов данных приведена в последующей схеме:

Преобразование типов в выражениях происходит неявно (без роли программистов) последующим образом: Если один из операндов имеет тип, изображенный на более малом Выражения и преобразование типов уровне, чем другой, то он приводится к типу второго операнда при наличии пути меж ними. Если пути нет, то появляется ошибка компиляции (чтоб ее избежать, нужно пользоваться операцией очевидного преобразования). Если путей преобразования несколько, то выбирается более маленький, не содержащий пунктирных линий.

Практикум.


vipusk-zhilishnih-negosudarstvennih-obligacij-referat.html
vipuskaemih-redakcionno-izdatelskim-otdelom-kolledzha.html
vipuski-posvyasheni-germano-sovetskoj-druzhbe-i-40-letiyu-pobedi-nad-fashizmom.html