Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

5.1.1.4 Операции присваивания

Все заявленные в заголовке подраздела операции присваивания в порядке убывания приоритета представлены в таблице 5.5. Эта группа операций присваивания включает 11 наименований. Данные операции формируют новое значение.

Во всех процедурных языках существует операция простого присваивания. В языке C# эту операцию изображают с помощью одинарного знака равенства «=».

Формат данной операции:

переменная = выражение

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

int i,j,k; …….i=j=k=1;…..

В операции присваивания вычисленное значение выражения заносится в память по адресу, который определяется именем пере­менной, находящейся слева от знака операции. При этом теряется то, что в этой об­ласти памяти хранилось ранее. При выполнении присвоений в цепочке первым выполнится присвоение k=1, затем полученное значение k присвоится переменной j, а потом переменной i присвоится значение j.

Таблица 5.5  Операции присваивания

Знак операции

Название

=

Присваивание

*=

Умножение с присваиванием

/=

Деление с присваиванием

%=

Остаток отделения с присваиванием

+=

Сложение с присваиванием

- =

Вычитание с присваиванием

<<=

Сдвиг влево с присваиванием

>>=

Сдвиг вправо с присваиванием

&=

Поразрядное И с присваиванием

^=

Поразрядное исключающее ИЛИ с присваиванием

| =

Поразрядное ИЛИ с присваиванием

В сложных операциях присваивания (табл. 5.5) при вычислении выражения, стоящего в правой части, используется значение из левой части. Эти операции могут, использоваться в программе как законченные операторы. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, т.е. выражение а+= b является более компактной записью выражения а = а + b.

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

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

Условная операция в C# часто используется вместо условного оператора ifthenelse для организации ветвлений на две ветви, что приводит в целом к сокращению текста программы. Такая операция является тернарной, поскольку содержит три операнда. Общий вид операции:

Оп_1? Оп_2: Оп_3;

где

  • Оп_1 первый операнд: выражение, неявно приводимое к логическому типу, – условие ветвления;

  • Оп_2 – второй операнд: его значение принимается за значение условной операции, если значение первого операнда равно true;

  • Оп_3 – третий операнд: его значение принимается за значение условной операции, если значение первого операнда равно false.

Например:

max = b > а ? b : а;

переменной max будет присвоено значение b, если выполняется условие (b> а), и значение а, если – нет.

В общем случае типы Оп_2 и Оп_3 могут не совпадать. Каков же тип результата данной операции будет в таком случае? Тип результата условной операции определяется по типам Оп_2 и Оп_3 в соответствии со следующими правилами:

  • при совпадении типов Оп_2 и Оп_3 операндов их тип является типом результата операции;

  • иначе, если существует неявное преобразование типа Оп_2 к типу Оп_3, но не существует неявное преобразование типа Оп_3 к типу Оп_2, то тип результата операции равен типу Оп_3;

  • иначе, если существует неявное преобразование типа Оп_3 к типу Оп_2, но не существует неявное преобразование типа Оп_2 к типу Оп_3, то тип результата операции равен типу Оп_2;

  • иначе возникает ошибка компиляции.