Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Укороченные логические операторы

Поиск

 

В С# предусмотрены также специальные, укороченные, варианты логических операторов И и ИЛИ, предназначенные для получения более эффективного кода. Поясним это на следующих примерах логических операций. Если первый операнд логической операции И имеет ложное значение false, то её результат будет иметь ложное значение независимо от значения второго операнда. Если же первый операнд логической операции ИЛИ имеет истинное значение true, то её результат будет иметь истинное значение независимо от значения второго операнда. Благодаря тому, что значение второго операнда в этих операциях вычислять не нужно, экономится время и повышается эффективность кода.

 

Укороченная логическая операция И выполняется с помощью оператора &&, а укороченная логическая операция ИЛИ — с помощью оператора ||. Этим укороченным логическим операторам соответствуют обычные логические операторы & и |. Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости.

Укороченные логические операторы иногда оказываются более эффективными, чем их обычные аналоги. Так зачем же нужны обычные логические операторы И и ИЛИ? Дело в том, что в некоторых случаях требуется вычислять оба операнда логической операции И либо ИЛИ из-за возникающих побочных эффектов. Пример:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace LC_Console

{

class Program

{

static void Main()

{

short d = 12, f = 1, i = 0;

bool b = true;

// В данном случае используется укороченный оператор

// и операция сравнения выполнится в нормальном потоке

if (f!= 0 && (d % f) == 0)

Console.WriteLine("{0} делится нацело на {1}", d, f);

// В этом случае так же используется укороченный оператор,

// но при этом возникнет исключительная ситуация

// т.к. первый оператор сравнения содержит деление на 0

if ((d % f) == 0 && f!= 0)

Console.WriteLine("{0} делится нацело на {1}", d, f);

// При использовании целостного оператора в любом

// случае возникнет исключительная ситуация

if (f!= 0 & (d % f) == 0)

Console.WriteLine("{0} делится нацело на {1}", d, f);

// Практический пример использования обычных операторов.

// При использовании обычного оператора, в данной конструкции

// i будет инкреминироваться

if (b | (++i < 10))

Console.WriteLine("i равно {0}", i); // i = 1

i = 0;

// При использовании укороченного оператора

// значение i останется прежним

if (b || (++i <= 10))

Console.WriteLine("i равно {0}", i); // i = 0

Console.WriteLine("Для продолжение нажмите любую клавишу... ");

Console.ReadLine();

}

}

}

/* Выведет:

* 12 делится нацело на 1

* 12 делится нацело на 1

* 12 делится нацело на 1

* i равно 1

* i равно 0

* Для продолжение нажмите любую клавишу...

*/

 

Если в коде примера выше переменной f задать число «0, будет выдано исключение «деления на ноль»: DivideByZeroException.

Применение операторов: операторы присваивания

Применение операторов: операторы присваивания

 

Операторы присваивания

 

Оператор присваивания обозначается одиночным знаком равенства «. В С# оператор присваивания действует таким же образом, как и в других языках программирования. Ниже приведена его общая форма:

 

<имя переменной> = <выражение>

 

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

 

int x, у, z;

x = у = z = 10; // Присвоить значение 10 переменным x, у и z

 

В приведённом выше фрагменте кода одно и то же значение 10 задаётся для переменных х, у и z с помощью единственного оператора присваивания. Это значение присваивается сначала переменной z, затем переменной у и, наконец, переменной х. Такой способ присваивания «по цепочке» удобен для задания общего значения целой группе переменных.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 510; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.166.61 (0.007 с.)