Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Логические операции в си шарп

Операторы отношения и логические операторы

C# — Руководство по C# — Операторы отношения и логические операторы

В обозначениях оператор отношения и логический оператор термин отношения означает взаимосвязь, которая может существовать между двумя значениями, а термин логический — взаимосвязь между логическими значениями «истина» и «ложь». И поскольку операторы отношения дают истинные или ложные результаты, то они нередко применяются вместе с логическими операторами. Именно по этой причине они и рассматриваются совместно.

Ниже перечислены операторы отношения:

Операторы отношения C#

ОператорЗначение
==Равно
!=Не равно
>Больше
=Больше или равно
Логические операторы C#

ОператорЗначение
&И
|ИЛИ
^Исключающее ИЛИ
&&Укороченное И
||Укороченное ИЛИ
!НЕ

Результатом выполнения оператора отношения или логического оператора является логическое значение типа bool.

В целом, объекты можно сравнивать на равенство или неравенство, используя операторы отношения == и !=. А операторы сравнения , = могут применяться только к тем типам данных, которые поддерживают отношение порядка. Следовательно, операторы отношения можно применять ко всем числовым типам данных. Но значения типа bool могут сравниваться только на равенство или неравенство, поскольку истинные (true) и ложные (false) значения не упорядочиваются. Например, сравнение true > false в C# не имеет смысла.

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

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

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

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

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

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

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

Стоит отметить, что при возникновении исключительной ситуации во время отладки кода, Visual Studio 2010 выводит сообщение следующего характера:

Условные выражения

Условные выражения – сложные логические конструкции, в языке программирования C#, которые используются для управления ходом выполнения программы.

Условные конструкции могут включать в себя:

  • Операции сравнения – это отдельная группа операторов, для сравнения значений, на вход принимают два аргумента одинакового типа данных, а возвращают логическое значение true(истина) или false(ложь);
  • Логические операции – операторы, которые используются для работы с логическим типом данных bool (название в .Net нотации System.Boolean).

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

Оператор проверки на равенство ==

Если операнды эквивалентны, то операция сравнения вернет значение true, если не равны — false.

Оператор проверки на неравенство !=

Если операнды не равны, то операция сравнения вернет значение true, если равны — false.

Оператор меньше

Вернет true, если первый операнд строго больше второго, в противном случае false.

Оператор больше равно >=

Вернет true, если первый операнд больше второго, или значения равны, в ином случае false.

Логические операции

Применяются для оперирования логическим типом данных bool, принимают в качестве аргументов и возвращают булевы значения. Обычно используются для объединения нескольких выражений со сравнением.

Оператор логического отрицания !

Отрицание (логическое не) – унарная операция, которая возвращает true при значении операнда false и false – когда значение на входе true.

Оператор логического сложения

Дизъюнкция (логическое или) – бинарная операция, которая вернет значение true, если один из операндов имеет значение true, в противном случае – false.

В языке C#, логическое или имеет две формы записи:

  • | – полная дизъюнкция, вычисляет оба операнда, даже если первый равен true;
  • || – сокращенное логическое сложение, если значение первого операнда true, то второй операнд не вычисляется.

Оператор логического умножения

Конъюнкция (логическое и) – бинарная операция, которая возвращает значение true, если оба операнда равняются true, в ином случае – false.

По аналогии с предыдущей операцией, логическое и поддерживает две формы записи:

Для улучшения производительности выполнения программы, рекомендуется использовать сокращенные формы логических операций “и”(&&) и “или”(||).

Оператор логического сложения по модулю ^

Исключительная дизъюнкция (операция xor) – бинарная операция, которая вернет значение true, если операнды не равны, то есть один из них имеет значение true, а другой — false, в противном случае – false.

Логические операторы с присвоением

По аналогии с арифметическими и побитовыми операциями, C# позволяет использовать логические операторы с присвоением для булевых выражений.

Их операндами могут быть:

  • переменные и константы булевого типа;
  • конструкции сравнения;
  • логические выражения.

Логическое или с присвоением |=

Бинарный оператор, который присваивает левому операнду значение его дизъюнкции с правым:

Логическое и с присвоением &=

Бинарный оператор, который присваивает левому операнду значение его конъюнкции с правым:

Логическое исключительное или с присваивание ^=

Бинарный оператор, который присваивает левому операнду результат операции xor левого операнда с правым:

Приоритет выполнения операций

ПриоритетОператорАссоциативность
1!левая*
2, =-//-
3==, !=-//-
4&-//-
5^-//-
6|-//-
7&&-//-
8||-//-
9&=, |=, ^=правая**

* Левая ассоциативность – операции выполняются слева направо.
** Правая ассоциативность – справа налево.

Как и в случае с арифметическими операциями, приоритет выполнения в сложных условных выражениях можно менять с помощью скобок – “(” и “)”.

Логические операции в си шарп

Выражения и операции в C#

Выражения и операции в C#

Доброго времени суток! В этой статье я доступно и коротко расскажу о выражения и операциях, часто используемых в C#. Основной код программы, написанной на C#, состоит из операторов и блоков операторов. Операторы, состоят из выражений, а те, в свою очередь – из операций и операндов. Пример простейшего выражения: 2 + 5; где «2» и «5» являются операндами, а «+» – операцией.

В программах, написанных на C#, операндами обычно являются объекты классов (в том числе, пользовательских) или переменные/константы встроенных типов.

Операции, можно условно разделить на группы: унарные (с одним операндом), бинарные (с двумя операндами), тернарные (с тремя операндами), но я буду перечислять операции группируя их по приоритету выполнения (в порядке убывания).

Приоритет выполнения, показывает, в каком порядке, буду выполняться операции в выражении, состоящем более чем из одной операции. Как в математике, помните? Умножение выполняется перед сложением или вычитанием.

Давайте теперь рассмотрим основные операции, доступные в C#!

«.» – операция доступа к полю/свойству/методу класса. Использовать можно, например, так:

«()» – операция вызова метода. Использовать можно, следующим:

«[]» – операция доступа к массиву (если хотите, к элементу массива). Пример использования:

«++» и «» после операнда – операции постинкремента и постдекремента (как правило, увеличивает и уменьшает, соответственно, значение операнда на единицу). Использовать можно так:

«new» – операция создания объекта/массива. Использовать можно так:

«typeof» – операция получения информации о типе данных. Пример использования:

«» перед операндом – операция отрицания. Использовать можно так:

«!» перед операндом – операция логического отрицания. Использовать можно следующим образом:

» перед операндом – операция двоичного (побитового) отрицания. Инвертирует (0 меняет на 1, а 1 на ноль) каждый бит числа. Этой операцией, Вы будете пользоваться редко… Использовать можно так:

«++» и «» перед операндом – операции преинкремента и предекремента соответственно (как правило, увеличивает и уменьшает, соответственно, значение операнда на единицу). Использовать можно так:

Обратите внимание, префиксная форма операции инкремента/декремента очень похожа на постфиксную, отличия проявляются лишь при использовании в сложных выражениях. Преинкремент/декремент сначала выполняется сам, а потом возвращает значение, а постфиксная форма, сначала возвращает значение, а потом выполняется.

На практике, постфиксная форма работает так:

«(…)» перед операндом – операция приведения типа. Используется для приведения переменной одного типа, к другому (так называемое, явное приведение типа). Использовать можно так:

«*» и «/» – операции умножения и деления. Думаю, использование этих операций в описании не нуждается.

«%» – данная операция, возвращает остаток от деления. К примеру, при делении четного числа на 2, вернет 0. На практике можно использовать так:

«+» и «» – операции сложения и вычитания. Думаю, в дополнительном описании не нуждаются.

« >» – операции побитового сдвига влево и вправо соответственно. Как это работает на практике:

«is» – операция проверки возможности приведения типа. На практике работает так:

«as» – операция преобразования типа, без генерации исключения в случае неудачи. Данная операция осуществляет попытку преобразовать объект одного типа к другому, но, если такое преобразование невозможно, возвращает null (пустую ссылку, если хотите). На практике это работает так:

«==» и «!=» – операции эквивалентности, эквивалентно и неэквивалентно (обратные друг другу операции).

«&» – операция побитового «И» для целочисленных типов и операция логического умножения, для bool-типов.

«^» – операция побитового исключающего «ИЛИ» для целочисленных типов и операция логического исключающего «ИЛИ», для bool-типов.

«|» – операция побитового «ИЛИ» для целочисленных типов и операция логического «ИЛИ», для bool-типов.

«&&» -– операция условного «И». Возвращает истину, если истины оба операнда, во всех остальных случаях, вернет ложь. Использовать можно так:

«||» -– операция условного «ИЛИ». Возвращает истину, если хоть один операнд имеет значение true. Использовать можно так:

«?» – условная операция. Имеет вид: [условие] ? [результат 1] : [результат 2]. Если выполняется условие, то возвращается [результат 1], если условие не выполняется – [результат 2]. Использовать можно так:

«=» – операция присваивания. Думаю, что пояснять для чего нужна эта операция не нужно, она использовалась не однократно в примерах выше.

«*=», «/=», «%=», «+=», «-=», « >=», «&=», «^=», «|=» – операции составного присваивания. Работу покажу на примере операции «+=»:

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

C# — Операторы

Оператор — это символ, который сообщает компилятору выполнить определенные математические или логические манипуляции. C # имеет богатый набор встроенных операторов и предоставляет следующие типы операторов:

  • Арифметические операторы
  • Реляционные операторы
  • Логические операторы
  • Побитовые операторы
  • Операторы присваивания
  • Другие операторы

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

Арифметические операторы

В следующей таблице показаны все арифметические операторы, поддерживаемые C #. Предположим, что переменная A содержит 10, а переменная B имеет 20, тогда —

ОператорОписаниеПример
+Добавляет два операндаA + B = 30
Вычитает второй операнд с первогоA — B = -10
*Умножает оба операндаA * B = 200
/Делит числитель на де-числительB / A = 2
%Оператор модуля и остаток после целочисленного деленияB% A = 0
++Оператор приращения увеличивает целочисленное значение на единицуA ++ = 11
Оператор Decrement уменьшает целочисленное значение на единицуA— = 9

Реляционные операторы

В следующей таблице показаны все реляционные операторы, поддерживаемые C #. Предположим, что переменная A имеет место 10, а переменная B имеет 20, тогда —

ОператорОписаниеПример
==Проверяет, равны ли значения двух операндов или нет, если да, то условие становится истинным.(A == B) не соответствует действительности.
знак равноПроверяет, равны ли значения двух операндов или нет, если значения не равны, условие становится истинным.(A! = B) истинно.
>Проверяет, превышает ли значение левого операнда значение правого операнда, если да, тогда условие становится истинным.(A> B) неверно.
=Проверяет, превышает ли значение левого операнда значение правого операнда, если да, тогда условие становится истинным.(A> = B) неверно.
>Двоичный оператор правого сдвига.Значение левых операндов перемещается вправо на количество бит, заданных правым операндом.A >> 2 = 15, что составляет 0000 1111

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

Существуют следующие операторы присваивания, поддерживаемые C # —

ОператорОписаниеПример
знак равноПростой оператор присваивания, присваивает значения из правых операндов в левый операндC = A + B присваивает значение A + B в C
+ =Добавить AND присваивания, Он добавляет правый операнд в левый операнд и присваивает результат левому операндуC + = A эквивалентно C = C + A
знак равноВычитание и оператор присваивания, он вычитает правый операнд из левого операнда и присваивает результат левому операндуC — = A эквивалентно C = C — A
знак равноОператор умножения и присваивания, Он умножает правый операнд на левый операнд и присваивает результат левому операндуC * = A эквивалентно C = C * A
знак равноОператор Divide AND assign. Он делит левый операнд на правый операнд и присваивает результат левому операндуC / = A эквивалентно C = C / A
знак равноМодуль и оператор присваивания, он принимает модуль с использованием двух операндов и присваивает результат левому операндуC% = A эквивалентно C = C% A
> =Оператор правой смещения и назначенияC >> = 2 совпадает с C = C >> 2
знак равноОператор побитового И присваиванияC & = 2 является таким же, как C = C & 2
^ =побитовое исключающее ИЛИ и оператор присваиванияC ^ = 2 является таким же, как C = C ^ 2
| =побитовое включение OR и оператор присваиванияC | = 2 совпадает с C = C | 2

Есть несколько других важных операторов, включая sizeof, typeof и ? :поддерживается C #.

ОператорОписаниеПример
размер()Возвращает размер типа данных.sizeof (int), возвращает 4.
тип()Возвращает тип класса.TypeOf (StreamReader);
&Возвращает адрес переменной.& А; возвращает фактический адрес переменной.
*Указатель на переменную.* А; создает указатель с именем ‘a’ для переменной.
? :Условное выражениеЕсли условие верно? Тогда значение X: В противном случае значение Y
являетсяОпределяет, имеет ли объект определенный тип.Если (Ford — Car) // проверяет, является ли Ford объектом класса Car.
в видеПередача без создания исключения, если сбой выполняется.Object obj = new StringReader («Hello»);

StringReader r = obj как StringReader;

Приоритет оператора в C #

Приоритет оператора определяет группировку терминов в выражении. Это влияет на оценку выражения. Некоторые операторы имеют более высокий приоритет, чем другие; например, оператор умножения имеет более высокий приоритет, чем оператор сложения.

Например, x = 7 + 3 * 2; здесь x назначается 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому первая оценка выполняется для 3 * 2, а затем 7 добавляется в нее.

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

Читать еще:  Язык си define
Ссылка на основную публикацию
Adblock
detector