×
Traktatov.net » C# 4.0: полное руководство » Читать онлайн
Страница 52 из 650 Настройки
в C# не имеет смысла.

Операнды логических операторов должны относиться к типу bool, а результат выполнения логической операции также относится к типу bool. Логические операторы &, |, и ! поддерживают основные логические операции И, ИЛИ, исключающее ИЛИ и НЕ в соответствии с приведенной ниже таблицей истинности.


>p     >q     >p & q  >p | q  >p >^>!p


>false >false >false  >false  >false  >true

>true  >false >false  >true   >true   >false

>false >true  >false  >true   >true   >true

>true  >true  >true   >true   >false  >false


Как следует из приведенной выше таблицы, результатом выполнения логической операции исключающее ИЛИ будет истинное значение (true), если один и только один ее операнд имеет значение true.

Ниже приведен пример программы, демонстрирующий применение нескольких операторов отношения и логических операторов.


>// Продемонстрировать применение операторов

>// отношения и логических операторов.

>using System;

>class RelLogOps {

>  static void Main() {

>    int i, j;

>    bool b1, b2;


>    i = 10;

>    j = 11;

>    if(i < j) Console.WriteLine("i < j");

>    if(i <= j) Console.WriteLine("i <= j");

>    if (i != j) Console.WriteLine("i != j");

>    if(i == j) Console.WriteLine("Нельзя выполнить");

>    if(i >= j) Console.WriteLine("Нельзя выполнить");

>    if(i > j) Console.WriteLine("Нельзя выполнить");

>    b1 = true;

>    b2 = false;

>    if(b1 & b2) Console.WriteLine("Нельзя выполнить");

>    if(!(b1 & b2)) Console.WriteLine("!(b1 & b2) — true");

>    if(b1 | b2) Console.WriteLine("bl I b2 - true");

>    if(b1 >^ b2) Console.WriteLine("bl >^ b2 — true");

>  }

>}


Выполнение этой программы дает следующий результат.


>i < j

>i <= j

>i != j

>!(b1 & b2) — true 

>b1 | b2 — true

>b1 >A b2 - true


Логические операторы в C# выполняют наиболее распространенные логические операции. Тем не менее существует ряд операций, выполняемых по правилам формальной логики. Эти логические операции могут быть построены с помощью логических операторов, поддерживаемых в С#. Следовательно, в С# предусмотрен такой набор логических операторов, которого достаточно для построения практически любой логической операции, в том числе импликации. Импликация — это двоичная операция, результатом которой является ложное значение только в том случае, если левый ее операнд имеет истинное значение, а правый — ложное. (Операция импликации отражает следующий принцип: истина не может подразумевать ложь.) Ниже приведена таблица истинности для операции импликации.


>p       >q       >Результат импликации p и q


>true    >true    >true

>true    >false   >false

>false   >false   >true

>false   >true    >true


Операция импликации может быть построена на основе комбинации логических операторов ! и |, как в приведенной ниже строке кода.


>! р I q


В следующем примере программы демонстрируется подобная реализация операции импликации.


>// Построение операции импликации в С#.

>using System;

>class Implication {

>  static void Main() {

>    bool p=false, q=false;

>    int i, j;

>    for(i =0; i < 2; i++) {

>      for(j = 0; j < 2; j++) {

>        if(i==0) = true;

>        if(i==1) p = false;

>        if(j==0) q = true;