Операторы в си логические: Логические операторы в C | Microsoft Docs
Содержание
Советы по поиску
Основные проблемы с поиском информации часто связаны с неудачным выбором ключевых слов. В качестве ключевых слов могут использоваться как отдельные слова, так и словосочетания, фразы. Все служебные слова (предлоги, союзы, частицы и т.п.) не считаются ключевыми. Термины, частота встречаемости которых мала, не следует включать в поиск, а часто встречающиеся — надо употреблять с другими словами, сужающими их значение. Например, «архитектура Москвы», «памятники Москвы».
Следует отличать название темы от поискового запроса — набора ключевых слов, которые вводятся в строку «поиск». Поисковый запрос может состоять из одного или нескольких слов или фразы.
Тема: «Принцип историзма в научном исследовании».
Ключевые слова: научное исследование, принцип историзма, философия истории, исторический процесс, тенденции, прогресс, регресс, контекст.
Для соединения ключевых слов в поисковой фразе, сужения или расширения поиска используются логические операторы «И» (AND), «ИЛИ» (OR), «НЕ» (NOT) и оператор близости NEAR.
оператор | описание работы оператора | пример запроса |
И (AND) | поиск документов, содержащих оба слова, соединенных оператором |
музей И публика
Renaissance AND Humanism
(оба слова должны быть в найденных документах)
|
ИЛИ (OR) |
поиск документов, содержащих хотя бы одно из слов, соединенных
оператором
Также данный оператор используется для альтернативных вариантов
|
вето ИЛИ запрет
(или слово » вето» или слово «запрет»должно
быть в найденных документах)
whigs OR tory
Молдова ИЛИ Молдавия
USA OR United States
Second World War OR World War II
|
НЕ (NOT) |
употребляется перед словами, наличие которых в документе необходимо
исключить. Оператор НЕ используется только лишь в случае полного
отрицания понятий
|
Античная история НЕ Юлий Цезарь
(из поиска будут исключены документы, в которых встречается
словосочетание «Юлий Цезарь»)
presbyterian NOT England
|
Near
/n
|
оператор близости показывает, что второй термин должен находиться на
расстоянии от первого, не превышающем определенного числа слов.
Оператором близости можно заменять предлог «в». Также запросы на
близость удобно использовать для поиска точного названия учреждения,
т.к. это позволяет найти все упоминания учреждения в различных падежах
|
во второй/0 половине/XV
war NEAR5 prisoners of war
Наполеон/1 Москва
Reformation NEAR5 Germany
|
Логические операторы можно сочетать друг с другом
Византия И крестносцы ИЛИ крестовые походы
Точный поиск по фразе
» » |
двойные кавычки — оператор строго соответствия. Используется для поиска
точных терминов или фраз.Слова, заключенные в кавычки, появвятся во
всех результатах поиска в том порядке, в каком вы их напечатали без
применения морфологического склонения слов.
Дефис, тире являются аналогом оператора НЕ и поэтому слова и
выражения, в которых они используются, также следует заключать в кавычки
|
«Крымская война»
«double standards»
«1917-1921 гг.»
«советско-финская война»
«Сухово-Кобылин»
|
Для построения сложных запросов можно воспользоваться круглыми скобками ( )
они задают порядок действия логических операторов (сначала выполняются операции внутри скобок, а затем — между скобками)
(Россия /5 Германия) И «1914-1917» Не рецензия
(literature AND («second half» AND XIX))
Для расширения поиска можно использовать дополнительные параметры поиска — подстановочные знаки.
Символ * используется как символ замены любого количества букв в конце слова.
развед* (разведка, разведданные, разведывательная деятельность)
histor* (history, historic, historiograhy)
Знак вопроса заменяет любую отдельную букву. Не используется в датах и числах.
Леваш?в (Левашов, Левашёв)
wom?n (woman, women)
Обращайте внимание на то, какими ключевыми словами, рубриками снабжены найденные релевантные документы, изучите заглавия и аннотации тех источников, которые вы получили при поиске, чтобы провести повторный поиск с уже этими ключевыми словами.
Не забывайте проверять орфографию в написании слов.
Получить консультации по поиску в электронных ресурсах вы можете в справочно-библиографическом отделе (ком.306), в кабинете биографики (ком.321б) или по e-mail [email protected] (c пометкой консультация).
Логические выражения и операторы. Курс «Python. Введение в программирование»
Логические выражения и логический тип данных
Часто в реальной жизни мы соглашаемся с каким-либо утверждением или отрицаем его. Например, если вам скажут, что сумма чисел 3 и 5 больше 7, вы согласитесь, скажете: «Да, это правда». Если же кто-то будет утверждать, что сумма трех и пяти меньше семи, то вы расцените такое утверждение как ложное.
Подобные фразы предполагают только два возможных ответа – либо «да», когда выражение оценивается как правда, истина, либо «нет», когда утверждение оценивается как ошибочное, ложное. В программировании и математике если результатом вычисления выражения может быть лишь истина или ложь, то такое выражение называется логическим.
Например, выражение 4 > 5 является логическим, так как его результатом является либо правда, либо ложь. Выражение 4 + 5 не является логическим, так как результатом его выполнения является число.
На позапрошлом уроке мы познакомились с тремя типами данных – целыми и вещественными числами, а также строками. Сегодня введем четвертый – логический тип данных (тип bool
). Его также называют булевым. У этого типа всего два возможных значения: True (правда) и False (ложь).
>>> a = True >>> type(a) <class 'bool'> >>> b = False >>> type(b) <class 'bool'>
Здесь переменной a было присвоено значение True
, после чего с помощью встроенной в Python функции type()
проверен ее тип. Интерпретатор сообщил, что это переменная класса bool
. Понятия «класс» и «тип данных» в данном случае одно и то же. Переменная b также связана с булевым значением.
В программировании False
обычно приравнивают к нулю, а True
– к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу:
>>> int(True) 1 >>> int(False) 0
Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу:
>>> bool(3.4) True >>> bool(-150) True >>> bool(0) False >>> bool(' ') True >>> bool('') False
И здесь работает правило: всё, что не 0 и не пустота, является правдой.
Логические операторы
Говоря на естественном языке (например, русском) мы обозначаем сравнения словами «равно», «больше», «меньше». В языках программирования используются специальные знаки, подобные тем, которые используются в математике: >
(больше), <
(меньше), >=
(больше или равно), <=
(меньше или равно), ==
(равно), !=
(не равно).
Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком «равно», и операцию сравнения (два знака «равно»). Присваивание и сравнение – разные операции.
>>> a = 10 >>> b = 5 >>> a + b > 14 True >>> a < 14 - b False >>> a <= b + 5 True >>> a != b True >>> a == b False >>> c = a == b >>> a, b, c (10, 5, False)
В данном примере выражение c = a == b
состоит из двух подвыражений. Сначала происходит сравнение (==
) переменных a и b. После этого результат логической операции присваивается переменной c. Выражение a, b, c
просто выводит значения переменных на экран.
Сложные логические выражения
Логические выражения типа kByte >= 1023
являются простыми, так как в них выполняется только одна логическая операция. Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответа «Да» или «Нет» в зависимости от результата выполнения двух простых выражений. Например, «на улице идет снег или дождь», «переменная news больше 12 и меньше 20″.
В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора – так называемые логические И (and) и ИЛИ (or).
Чтобы получить True
при использовании оператора and
, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False
, то и все сложное выражение будет ложным.
Чтобы получить True
при использовании оператора or
, необходимо, чтобы результат хотя бы одного простого выражения, входящего в состав сложного, был истинным. В случае оператора or
сложное выражение становится ложным лишь тогда, когда ложны оба составляющие его простые выражения.
Допустим, переменной x было присвоено значение 8 (x = 8
), переменной y присвоили 13 (y = 13
). Логическое выражение y < 15 and x > 8
будет выполняться следующим образом. Сначала выполнится выражение y < 15
. Его результатом будет True
. Затем выполнится выражение x > 8
. Его результатом будет False
. Далее выражение сведется к True and False
, что вернет False
.
>>> x = 8 >>> y = 13 >>> y < 15 and x > 8 False
Если бы мы записали выражение так: x > 8 and y < 15
, то оно также вернуло бы False
. Однако сравнение y < 15
не выполнялось бы интерпретатором, так как его незачем выполнять. Ведь первое простое логическое выражение (x > 8
) уже вернуло ложь, которая, в случае оператора and
, превращает все выражение в ложь.
В случае с оператором or
второе простое выражение проверяется, если первое вернуло ложь, и не проверяется, если уже первое вернуло истину. Так как для истинности всего выражения достаточно единственного True
, неважно по какую сторону от or
оно стоит.
В языке Python есть еще унарный логический оператор not
, то есть отрицание. Он превращает правду в ложь, а ложь в правду. Унарный он потому, что применяется к одному выражению, стоящему после него, а не справа и слева от него как в случае бинарных and
и or
.
Здесь у < 15
возвращает True
. Отрицая это, мы получаем False
.
>>> a = 5 >>> b = 0 >>> not a False >>> not b True
Число 5 трактуется как истина, отрицание истины дает ложь. Ноль приравнивается к False
. Отрицание False
дает True
.
Практическая работа
Присвойте двум переменным любые числовые значения.
Используя переменные из п. 1, с помощью оператора
and
составьте два сложных логических выражения, одно из которых дает истину, другое – ложь.Аналогично выполните п. 2, но уже с оператором
or
.Попробуйте использовать в логических выражениях переменные строкового типа. Объясните результат.
Напишите программу, которая запрашивала бы у пользователя два числа и выводила бы
True
илиFalse
в зависимости от того, больше первое число второго или нет.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса
5.7 – Логические операторы
Добавлено 8 мая 2021 в 18:37
Сохранить или поделиться
Хотя операторы отношения (сравнения) могут использоваться для проверки того, является ли конкретное условие истинным или ложным, они могут проверять только одно условие за раз. Но часто нам нужно знать, выполняются ли одновременно несколько условий. Например, чтобы проверить, выиграли ли мы в лотерею, мы должны сравнить, все ли выбранные нами числа совпадают с выигрышными числами. В лотерее с 6 числами это будет включать 6 сравнений, и все они должны быть верными. В других случаях нам нужно знать, выполняется ли какое-либо из нескольких условий. Например, мы можем решить пропустить работу сегодня, если мы заболели, или если мы слишком устали, или если мы выиграли в лотерею в нашем предыдущем примере. Это потребует проверки того, верно ли какое-либо из трех сравнений.
Возможность тестирования несколько условий нам дают логические операторы.
В C++ есть 3 логических оператора:
Оператор | Обозначение | Пример использования | Операция |
---|---|---|---|
Логическое НЕ (NOT) | ! | !x | true , если x равен false ; или false , если x равен true |
Логическое И (AND) | && | x && y | true , если и x ,и y равны true ; в противном случае – false |
Логическое ИЛИ (OR) | || | x || y | true , если x или y равен true ; в противном случае – false |
Логическое НЕ (NOT)
Вы уже сталкивались с унарным оператором логического НЕ в уроке «4.9 – Логические (булевы) значения». Мы можем резюмировать эффекты логического НЕ следующим образом:
Операнд | Результат |
---|---|
true | false |
false | true |
Если операнд логического НЕ вычисляется как true
, логическое НЕ вычисляется как false
. Если операнд логического НЕ вычисляется как false
, логическое НЕ вычисляется как true
. Другими словами, логическое НЕ меняет логическое значение с true
на false
и наоборот.
Логическое НЕ часто используется в условных выражениях:
bool tooLarge { x > 100 }; // tooLarge равно true, если x > 100
if (!tooLarge)
// делаем что-нибудь с x
else
// выводим ошибку
Следует остерегаться того, что логическое НЕ имеет очень высокий уровень приоритета. Начинающие программисты часто делают следующую ошибку:
#include <iostream>
int main()
{
int x{ 5 };
int y{ 7 };
if (!x > y)
std::cout << x << " is not greater than " << y << '\n';
else
std::cout << x << " is greater than " << y << '\n';
return 0;
}
Эта программа напечатает:
5 is greater than 7
Но x
не больше y
, так как же это возможно? Ответ заключается в том, что поскольку оператор логического НЕ имеет более высокий приоритет, чем оператор «больше чем», выражение !x > y
фактически вычисляется как (!x) > y
. Поскольку x
равно 5, !x
вычисляется как 0, а 0 > y
равно false
, поэтому выполняется инструкция else
!
Правильный способ написать приведенный выше фрагмент:
#include <iostream>
int main()
{
int x{ 5 };
int y{ 7 };
if (!(x > y))
std::cout << x << " is not greater than " << y << '\n';
else
std::cout << x << " is greater than " << y << '\n';
return 0;
}
Таким образом, сначала будет вычислено x > y
, а затем логическое НЕ инвертирует логический результат.
Лучшая практика
Если логическое НЕ предназначено для работы с результатом других операторов, другие операторы и их операнды должны быть заключены в круглые скобки.
Простое использование логического НЕ, например if (!value)
, не требует скобок, потому что приоритет здесь не играет роли.
Логическое ИЛИ (OR)
Оператор логического ИЛИ используется для проверки того, выполняется ли одно из двух условий. Если значение левого операнда истинно, или значение правого операнда истинно, или оба значения истинны, то логический оператор ИЛИ возвращает true
. В противном случае он вернет false
.
Левый операнд | Правый операнд | Результат |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
Например, рассмотрим следующую программу:
#include <iostream>
int main()
{
std::cout << "Enter a number: ";
int value {};
std::cin >> value;
if (value == 0 || value == 1)
std::cout << "You picked 0 or 1\n";
else
std::cout << "You did not pick 0 or 1\n";
return 0;
}
В этом случае мы используем логический оператор ИЛИ, чтобы проверить, истинно ли левое условие (value == 0
) или правое условие (value == 1
). Если одно из них (или оба) истинны, логический оператор ИЛИ принимает значение true
, что означает выполнение инструкции if
. Если ни одно из них не является истинным, результат логического оператора ИЛИ будет false
, что означает выполнение инструкции else
.
Вы можете связать вместе множество операторов логического ИЛИ:
if (value == 0 || value == 1 || value == 2 || value == 3)
std::cout << "You picked 0, 1, 2, or 3\n";
Начинающие программисты иногда путают оператор логическое ИЛИ (||
) с оператором побитовое ИЛИ (|
) (который будет рассмотрен позже). Несмотря на то, что у них обоих в названии есть «ИЛИ», они выполняют разные функции. Их смешивание, вероятно, приведет к неверным результатам.
Логическое И (AND)
Логический оператор И используется для проверки истинности обоих операндов. Если оба операнда равны true
, логическое И возвращает true
. В противном случае возвращается false
.
Левый операнд | Правый операнд | Результат |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
Например, нам может потребоваться узнать, находится ли значение переменной x
в диапазоне от 10 до 20. На самом деле это два условия: нам нужно знать, больше ли x
, чем 10, а также меньше ли x
, чем 20.
#include <iostream>
int main()
{
std::cout << "Enter a number: ";
int value {};
std::cin >> value;
if (value > 10 && value < 20)
std::cout << "Your value is between 10 and 20\n";
else
std::cout << "Your value is not between 10 and 20\n";
return 0;
}
В этом случае мы используем оператор логическое И, чтобы проверить, истинны ли левое условие (value > 10
) и правое условие (value < 20
). Если оба условия истинны, оператор логическое И принимает значение true
, и выполняется инструкция if
. Если ни одно из условий или хотя бы одно из них не соответствует истине, оператор логическое И принимает значение false
, и выполняется инструкция else
.
Как и в случае с логическим ИЛИ, вы можете связать вместе множество операторов логическое И:
if (value > 10 && value < 20 && value != 16)
// делаем что-то
else
// делаем что-то другое
Если все эти условия верны, будет выполнена инструкция if
. Если какое-либо из этих условий ложно, будет выполняться инструкция else
.
Вычисление по короткой схеме
Чтобы логическое И возвращало true
, оба операнда должны иметь значение true
. Если первый операнд вычисляется как false
, логическое И знает, что оно должно возвращать false
, независимо от того, вычисляется ли второй операнд как true
или false
. В этом случае оператор логическое И немедленно вернет false
, даже не вычисляя второй операнд! Это известно как вычисление по короткой схеме и выполняется в основном в целях оптимизации.
Точно так же, если первый операнд для логического ИЛИ равен true
, тогда всё условие ИЛИ должно вычисляться как true
, и второй операнд не вычисляется.
Вычисление по короткой схеме дает еще одну возможность показать, почему операторы, вызывающие побочные эффекты, не должны использоваться в составных выражениях. Рассмотрим следующий фрагмент:
if (x == 1 && ++y == 2)
// сделать что-то
Если x
не равно 1, всё условие должно быть ложным, поэтому ++y
никогда не вычисляется! Таким образом, y
будет инкрементироваться только в том случае, если x
равен 1, что, вероятно, не совсем то, что задумывал программист!
Предупреждение
Вычисление по короткой схеме может привести к тому, что логическое ИЛИ и логическое И не будут вычислять один операнд. Избегайте использования выражений с побочными эффектами в выражениях с этими операторами.
Как и в случае с логическим и побитовым ИЛИ, начинающие программисты иногда путают оператор логическое И (&&
) с оператором побитовое И (&
).
Смешивание И и ИЛИ
Смешивания операторов логическое И и логическое ИЛИ в одном выражении часто невозможно избежать, но это область, полная потенциальных опасностей.
Многие программисты предполагают, что логическое И и логическое ИЛИ имеют одинаковый приоритет (или забывают, что это не так), точно так же, как сложение/вычитание и умножение/деление. Однако логическое И имеет более высокий приоритет, чем логическое ИЛИ, поэтому операторы логическое И будут вычисляться перед операторами логическое ИЛИ (если они не заключены в скобки).
Начинающие программисты часто пишут такие выражения, как value1 || value2 && value3
. Поскольку логическое И имеет более высокий приоритет, это выражение вычисляется как value1 || (value2 && value3)
, а не как (value1 || value2) && value3
. Надеюсь, это то, чего хотел программист! Если программист предполагал вычисление слева направо (как это происходит со сложением/вычитанием или умножением/делением), он или она получит не тот результат, который не ожидался!
При смешивании логического И и логического ИЛИ в одном выражении рекомендуется явно заключать в скобки каждый оператор и его операнды. Это помогает предотвратить ошибки приоритета, упрощает чтение кода и четко определяет, как вы рассчитывали вычислять выражение. Например, вместо записи value1 && value2 || value3 && value4
, лучше написать (value1 && value2) || (value3 && value4)
.
Лучшая практика
При смешивании логического И и логического ИЛИ в одном выражении явно заключите каждую операцию в скобки, чтобы убедиться, что они вычисляются так, как вы хотите.
Закон де Моргана
Многие программисты также ошибаются, полагая, что !(x && y)
– это то же самое, что !x && !y
. К сожалению, так нельзя «распределять» логическое НЕ.
Закон де Моргана говорит нам, как логическое НЕ должно распределяться в этих случаях:
!(x && y) эквивалентно !x || !y
!(x || y) эквивалентно !x && !y
Другими словами, когда вы распределяете логическое НЕ, вам также необходимо преобразовать логическое И в логическое ИЛИ, и наоборот!
Иногда это может быть полезно при попытке упростить чтение сложных выражений.
Где логический оператор исключающее ИЛИ (XOR)?
Логический оператор исключающее ИЛИ (XOR) – это логический оператор, представленный на некоторых языках, который используется для проверки истинности нечетного числа условий.
Левый операнд | Правый операнд | Результат |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | false |
В C++ нет оператора логическое исключающее ИЛИ. В отличие от логического ИЛИ или логического И, логическое исключающее ИЛИ не может быть вычислено по короткой схеме. По этой причине создание оператора логическое исключающее ИЛИ из операторов логического ИЛИ и логического И является сложной задачей. Однако вы можете легко имитировать логическое исключающее ИЛИ (XOR), используя оператор неравенства (!=
):
if (a != b) ... // a XOR b, предполагая, что a и b - логические значения
Это выражение можно расширить до нескольких операндов следующим образом:
if (a != b != c != d) ... // a XOR b XOR c XOR d, предполагая, что a, b, c и d
// являются логическими значениями
Обратите внимание, что приведенные выше шаблоны логического исключающего ИЛИ работают только в том случае, если операнды являются логического типа (не целочисленными значениями). Если вам нужна форма логического исключающего ИЛИ, которая работает с не-логическими операндами, вы можете использовать static_cast
для преобразования их в bool
:
// a XOR b XOR c XOR d, для любого типа, который можно преобразовать в bool
if (static_cast<bool>(a) != static_cast<bool>(b) != static_cast<bool>(c) != static_cast<bool>(d)) ...
Небольшой тест
Вопрос 1
Вычислите следующие выражения.
Примечание: в ответах мы «объясняем нашу работу», показывая вам шаги, предпринятые для получения окончательного ответа. Шаги разделены символом →. Выражения, которые были проигнорированы из-за правила вычисления по короткой схеме, помещены в квадратные скобки. Например,
(1 < 2 || 3 != 3) →
(true || [3 != 3]) →
(true) →
true
означает, что мы вычислили (1 <2 || 3 != 3)
, чтобы прийти к (true || [3 != 3])
, и вычислили его, чтобы прийти к true
. 3 != 3 никогда не выполнялся из-за вычисления по короткой схеме.
a) (true && true) || false
Ответ
(true && true) || false →
true || [false] →
true
b) (false && true) || true
Ответ
(false && [true]) || true →
false || true →
true
Вычисление по короткой схеме имеет место быть, если первый операнд ||
равен true
.
c) (false && true) || false || true
Ответ
(false && [true]) || false || true →
false || false || true →
false || true →
true
d) (5 > 6 || 4 > 3) && (7 > 8)
Ответ
(5 > 6 || 4 > 3) && (7 > 8) →
(false || true) && false →
true && false →
false
e) !(7 > 6 || 3 > 4)
Ответ
!(7 > 6 || 3 > 4) →
!(true || [3 > 4]) →
!true →
false
Оригинал статьи:
Теги
C++ / CppLearnCppДля начинающихЛогические операторЛогические типы даныхЛогическое И (AND)Логическое ИЛИ (OR)Логическое исключающее ИЛИ (XOR)Логическое НЕ (NOT)ОбучениеОператор (программирование)Программирование
Сохранить или поделиться
Программирование для начинающих \ 2.3. Логические операторы
Предыдущий раздел:
Следующий раздел:
2.3. Логические операторы
Из логических переменных и выражений можно строить более сложные (составные) логические выражения с помощью логических операторов: not (отрицание, логическое НЕ), or (логическое ИЛИ) и and (логическое И).
Выражение not A (где A – логическая переменная или выражение) истинно тогда, когда выражение A ложно, и ложно, когда A истинно.
Выражение A and B истинно, когда одновременно истинны выражения A и B. Если хотя бы одно из этих выражения (A или B) ложно, то A and B ложно.
Выражение A or B истинно, когда любое из выражений A или B истинно и ложно, когда оба исходных выражения ложны.
Правила работы логических операторов можно также задать с помощью таблиц истинности, в которых указывается истинность составного выражения, в зависимости от значений исходных простых выражений.
A | not A |
true | false |
false | true |
A | B | A and B |
true | true | true |
true | false | false |
false | true | false |
flase | false | false |
A | B | A or B |
true | true | true |
true | false | true |
false | true | true |
flase | false | false |
Составное логическое выражение может содержать сколько угодно логических операторов. При этом в первую очередь выполняются все операторы сравнения (, =, =, ), затем логические отрицания (not), затем логическое И (and) и в последнюю очередь логическое ИЛИ (or). Выражения могут содержать скобки, которые влияют на приоритетность выполнения операций.
Пример:
С помощью логических операторов мы, наконец, можем записать условие равенства сразу трех переменных. Правильный вариант имеет вид:
(x=y) and (y=z)
Следующий раздел:
Предыдущий раздел:
Добавить комментарий
Операторы условий — Документация BILLmanager
Операторы сравнения
Для проверки условия на истинность используются операторы сравнения. Они служат для сравнения двух значений между собой.
Оператор | ИСТИНА | Описание |
---|---|---|
=== | Если значения равны. | Проверка на идентичность без типизации данных. При сравнении числа и строки всегда ложно, так как сравниваются данные разных типов. |
!== | Если значения не равны. | |
== | Если значения равны. | Проверка на идентичность с типизацией данных. При сравнении числа и строки преобразует текст в число и выполнит сравнение двух чисел. |
!= | Если значения не равны. | |
> | Если левое значение больше. | Выявление большего значения. |
< | Если левое значение меньше. | |
>= | Если левое значение больше или равно правому. | |
<= | Если левое значение меньше или равно правому. |
Логические операторы
Логические операторы служат для объединения двух и более условий по правилам логических выражений.
- && — логическое И. Чтобы логическое выражение было истинным, все условия должны быть истинны.
- || — логическое ИЛИ. Чтобы логическое выражение было истинным, хотя бы одно условие должно быть истинным.
- ! — логическое НЕ. Изменяет результат условия на противоположный. Ложное условие будет считаться истинным и ложное условие будет считаться истинным.
Результат логического выражения в коде обозначается ключевыми словами true и false. Логическое выражение возвращает значение true, если оно истинно и значение false, если выражение ложно.
Оператор if … else
Базовый синтаксис конструкции:
if (логическое выражение) { фрагмент кода 1 //выполняется если логическое выражение истинно. } else { фрагмент кода 2 //выполняется если логическое выражение ложно. }
Использование ключевого слова else не является обязательным:
if (логическое выражение) { фрагмент кода 1 //выполняется если логическое выражение истинно. } фрагмент кода 2 //выполняется в любом случае, независимо от результата логического выражения.
Если из одного условия вытекает больше двух сценариев, то можно использовать вложенную конструкцию else if. В качестве примера приведено условие для отображения копеек в прописной записи итоговой суммы:
if (_second_num == 1 & _first_num != 1) _string += ' копейка'; //Первое условие. Если истинно, то выполняется описанный код и выход из условия. else if (_second_num > 1 && _second_num < 5) _string += ' копейки'; //Второе условие. Проверяется, если первое условие ложно. else _string += ' копеек';// Выполняется, если ни одно из условий не оказалось истинным.
Пример использования
В стандартном шаблоне счёта с помощью конструкции if … else реализован вывод информации о плательщике:
<% if ((findu(payment.customer.profiletype) == 2) || (findu(payment.customer.profiletype) == 3)) { %> // Если плательщик является юр. лицом или ИП, тогда <div>Покупатель: </div> <div><%= findu(payment.customer.name) %></div> <div>ИНН <%= findu(payment.customer.vatnum) %>, КПП <%= findu(payment.customer.kpp) %></div> // Вывести на печатную форму документа ИНН и КПП. <div> </div> <div><%= findu(payment.customer.postcode_legal) %>, <%= findu(payment.customer.country_legal_name) %>, <%= findu(payment.customer.city_legal) %>, <%= findu(payment.customer.address_legal) %></div> <% } else { %> // Иначе плательщик счиатется физ. лицом <div>Покупатель: </div> <div><%= findu(payment.customer.person) %></div> <div> </div> <div><%= findu(payment.customer.postcode_physical) %>, <%= findu(payment.customer.country_physical_name) %>, <%= findu(payment.customer.city_physical) %>, <%= findu(payment.customer.address_physical) %></div> // Вывести на печатную форму документа адрес плательщика. <% } %>
В приведённом фрагменте кода проверяется тип плательщика. Если это юридическое лицо или индивидуальный предприниматель, то на печатную форму счёта выводится его ИНН и КПП. Иначе плательщик считается физическим лицом и на печатную форму счёта выводится его адрес.
Условный оператор
Условный оператор — удобная альтернатива конструкции if … else. Оператор выполняет одно действие, если логическое выражение истинно и другое действие, если выражение ложно. Базовый синтаксис:
(условие)?фрагмент кода 1:фрагмент кода 2
Фрагмент кода 1 выполняется, если условие истинно. Фрагмент кода 2 выполняется, если условие ложно.
Пример использования
В функции приведения числа к строковому написанию содержится код:
var n=!isFinite(+number)?0:+number
Его можно расшифровать как «если выражение +number не является конечным числом, то переменной n присваивается 0, иначе n присваивается выражение +number».
Оператор switch
Оператор switch принимает одну переменную или выражение и в зависимости от полученного результата выполняет необходимый фрагмент кода. Базовый синтаксис выглядит следующим образом:
switch (выражение) { case 1: фрагмент кода 1 break; // завершает выполнение оператора case case 2: // конструкций case (вариантов) может быть любое количество фрагмент кода 2 break; default: // выполняется, если полученное значение не соответствует ни одному результату. фрагмент кода 3 }
Фрагмент кода 1 выполняется, если результатом выражения стало число 1. Фрагмент кода 2 выполняется, если результатом выражения стало число 2. Фрагмент кода 3 выполнится, если результатом выражения станет любое значение, кроме чисел 1 и 2.
Пример использования
В качестве примера приведён фрагмент кода, который возвращает одну из четырёх фраз, в зависимости от входного значения. Данный код не используется в предустановленных шаблонах биллинговой системы.
switch (word) { case 'hi': phrase = 'Hello my dear friend'; break; case 'bye': phrase = 'Goodbye, i hope to see you again'; break; case 'joke': phrase = 'I dont know jokes'; break; case 'day': phrase = 'Have a nice day!'; break; default: phrase = 'I dont understand you'; }
Данный фрагмент кода сопоставляет значение входной переменной word с возможными значениями:
- если в переменной «word» содержится слово «hi», то переменной «phrase» будет присвоено значение «Hello my dear friend»;
- если в переменной «word» содержится слово «bye», то переменной «phrase» будет присвоено значение «Goodbye, i hope to see you again»;
- если в переменной «word» содержится слово «joke», то переменной «phrase» будет присвоено значение «I dont know jokes»;
- если в переменной «word» содержится слово «day», то переменной «phrase» будет присвоено значение «Have a nice day»;
- если совпадения не найдены, то переменной phrase будет присвоено значение «I dont understand you».
Логические операторы — основы программирования
Кеннет Лерой Басби и Дэйв Брауншвейг
Обзор
Логический оператор — это символ или слово, используемое для соединения двух или более выражений, так что значение полученного составного выражения зависит только от значения исходных выражений и от значения оператора. Общие логические операторы включают AND, OR и NOT.
Обсуждение
В большинстве языков выражения, которые дают значения типа данных Boolean, разделены на две группы.Одна группа использует операторы отношения в своих выражениях, а другая группа использует логические операторы в своих выражениях.
Логические операторы часто используются для создания тестового выражения, которое контролирует выполнение программы. Этот тип выражения также известен как логическое выражение, потому что при вычислении они создают логический ответ или значение. Есть три общих логических оператора, которые дают логическое значение, манипулируя другим логическим операндом (ами). Символы и / или названия операторов различаются в зависимости от языка программирования:
Язык | И | ИЛИ | НЕ |
---|---|---|---|
С ++ | && | || | ! |
С # | && | || | ! |
Java | && | || | ! |
JavaScript | && | || | ! |
Python | и | или | не |
Swift | && | || | ! |
Вертикальные черточки или символ трубопровода находятся на той же клавише, что и обратная косая черта \.Вы используете клавишу SHIFT, чтобы получить его. На большинстве клавиатур он находится чуть выше клавиши Enter. Это может быть сплошная вертикальная линия на некоторых клавиатурах и отображаться как сплошная вертикальная линия на некоторых печатных шрифтах.
В большинстве языков существуют строгие правила формирования правильных логических выражений. Пример:
6> 4 && 2 <= 14
6> 4 и 2 <= 14
Это выражение содержит два оператора отношения и один логический оператор. Используя приоритет правил операторов, два оператора «реляционного сравнения» будут выполняться перед оператором «логическое и».Таким образом:
true && true
True and True
Окончательная оценка выражения: истина.
Мы можем сказать это по-английски так: это правда, что шесть больше четырех, а два меньше или равно четырнадцати.
При формировании логических выражений программисты часто используют круглые скобки (даже если это технически не требуется), чтобы сделать логику выражения очень понятной. Рассмотрим переписанное выше сложное логическое выражение:
(6> 4) && (2 <= 14)
(6> 4) и (2 <= 14)
Большинство языков программирования распознают любое ненулевое значение как истинное.Это делает следующее выражение допустимым:
6> 4 && 8
6> 4 и 8
Но помните порядок действий. По-английски это шесть больше четырех, а восемь не равно нулю. Таким образом,
true && true
True and True
Для сравнения 6 с 4 и 8 вместо этого будет записано как:
6> 4 && 6> 8
6> 4 и 6> 8
Это будет ложно как:
истина и ложь
истина и ложь
Таблицы истинности
Обычный способ показать логические отношения - это таблицы истинности.
x | л | x и y |
ложный | ложь | ложь |
ложный | правда | ложь |
истинное | ложь | ложь |
истинное | правда | правда |
x | л | x или y |
ложный | ложь | ложь |
ложный | правда | правда |
истинное | ложь | правда |
истинное | правда | правда |
x | не x |
ложный | правда |
истинное | ложь |
Примеры
Я называю этот пример того, почему я ненавижу «и» и люблю «или».
Каждый день, когда я приходил из школы с понедельника по четверг; Я спрашивал маму: «Можно мне выйти на улицу поиграть?» Она отвечала: «Если ваша комната чистая и у вас сделана домашняя работа, вы можете выйти на улицу и поиграть». Я научился ненавидеть слово «и». Мне удалось выполнить одно из заданий и у меня было время поиграть до обеда, но оба… ну, я ненавидел «и».
В пятницу моя мать приняла более расслабленную точку зрения, и когда меня спросили, могу ли я выйти на улицу и поиграть, она ответила: «Если ваша комната чистая или у вас сделана домашняя работа, вы можете выйти на улицу и поиграть.«Я научился быстро убирать свою комнату в пятницу днем. Что ж, разумеется, я любил «или».
В качестве следующего примера представьте, что подросток разговаривает со своей матерью. Во время разговора мама говорит: «Ведь папа у тебя разумный!» Подросток говорит: «Разумно. (короткая пауза) Нет. "
Может быть, профессора колледжей подумают, что все их студенты готовились к экзамену. Ха-ха! Нет. Что ж, надеюсь, вы уловили суть.
Примеры:
- 25 <7 || 15> 36
- 15> 36 || 3 <7
- 14> 7 && 5 <= 5
- 4> 3 && 17 <= 7
- ! ложь
- ! (13! = 7)
- 9! = 7 &&! 0
- 5> 1 && 7
Дополнительные примеры:
- 25 <7 или 15> 36
- 15> 36 или 3 <7
- 14> 7 и 5 <= 5
- 4> 3 и 17 <= 7
- не Ложь
- не (13! = 7)
- 9! = 7, а не 0
- 5> 1 и 7
Ключевые термины
- логический оператор
- Оператор, используемый для создания сложных логических выражений.
- таблицы истинности
- Распространенный способ показать логические отношения.
Список литературы
Логические операторы - cppreference.com
Возвращает результат логической операции.
Имя оператора | Синтаксис | Возможность перегрузки | Примеры прототипов (для класса T) | |
---|---|---|---|---|
Определение внутреннего класса | Определение внешнего класса | |||
отрицание | не а | Да | bool T :: operator! () Const; | логический оператор! (Const T & a); |
И | а и б | Да | bool T :: operator && (const T2 & b) const; | логический оператор && (const T & a, const T2 & b); |
включительно ИЛИ | а или б | Да | bool T :: оператор || (const T2 & b) const; | логический оператор || (const T & a, const T2 & b); |
|
[править] Объяснение
Выражения логического оператора имеют вид
! правых | (1) | ||||||||
левый && правый | (2) | ||||||||
левый || правых | (3) | ||||||||
1) Логическое НЕ
2) Логическое И
3) Логическое включительно ИЛИ
Если операнд не bool, он преобразуется в bool с помощью контекстного преобразования в bool: он правильно сформирован, только если объявление bool t (arg)
правильно сформировано, для некоторых придуманных временных t
.
Результат - логическое значение pr.
Для встроенного оператора логического НЕ результат будет истиной, если операнд ложь. В противном случае результат будет ложным.
Для встроенного логического оператора И результат будет истиной, если оба операнда верны. В противном случае результат будет ложным. Этот оператор является коротким замыканием: если первый операнд ложен, второй операнд не оценивается
Для встроенного логического оператора ИЛИ результат будет истиной, если либо первый, либо второй операнд (или оба) истинны.Этот оператор является коротким замыканием: если первый операнд истинен, второй операнд не оценивается.
Обратите внимание, что побитовые логические операторы не выполняют короткое замыкание.
[править] Результаты
а | верно | ложь |
---|---|---|
! А | ложь | верно |
и | а | ||
---|---|---|---|
правда | ложь | ||
б | верно | верно | ложь |
ложно | ложь | ложь |
или | а | ||
---|---|---|---|
правда | ложь | ||
б | верно | верно | верно |
ложно | верно | ложь |
При разрешении перегрузки для определяемых пользователем операторов следующие встроенные сигнатуры функций участвуют в разрешении перегрузки:
оператор bool! (Bool) | ||
оператор bool && (bool, bool) | ||
оператор bool || (bool, bool) | ||
[править] Пример
#include#include <строка> int main () { int n = 2; int * p = & n; // указатели можно преобразовать в bool if (p && * p == 2 // "* p" можно использовать после "p &&" || ! p && n! = 2) // || имеет более низкий приоритет, чем && std :: cout << "истина \ п"; // потоки также можно преобразовать в bool std :: cout << "Введите 'quit', чтобы выйти.\ п "; for (std :: string line; std :: cout << ">" && std :: getline (std :: cin, строка) && line! = "выйти"; ) ; }
Выход:
правда Введите "quit", чтобы выйти. > тест > выйти из
[править] Стандартная библиотека
Потому что свойства короткого замыкания оператора &&
и оператора ||
не применяются к перегрузкам, и поскольку типы с логической семантикой встречаются редко, только два стандартных библиотечных класса перегружают эти операторы:
применяет унарный арифметический оператор к каждому элементу valarray (общедоступная функция-член std :: valarray ) | |
применяет бинарные операторы к каждому элементу двух valarrays или valarray и значению (шаблон функции) | |
проверяет, произошла ли ошибка (синоним fail ()) (общедоступная функция-член std :: basic_ios ) [править] |
[править] См. b
a << b
a >> b
! A
a && b
a || б
a == b
a! = B
a a> b
a <= b
a> = b
a <=> b
a [b]
* a
и a
a-> b
a.б
а -> * б
а. * б
а (...)
а, б
? :
static_cast преобразует один тип в другой связанный тип
dynamic_cast преобразует в иерархиях наследования
const_cast добавляет или удаляет квалификаторы cv
reinterpret_cast преобразует тип в несвязанный тип
C-style cast преобразует один тип в другой путем сочетания static_cast
, const_cast
, и reinterpret_cast
new создает объекты с динамической продолжительностью хранения.
delete уничтожает объекты, ранее созданные новым выражением, и освобождает полученную область памяти
sizeof запросов размера типа
sizeof... запрашивает размер пакета параметров (начиная с C ++ 11)
typeid запрашивает информацию о типе типа
noexcept проверяет, может ли выражение вызывать исключение (начиная с C ++ 11)
alignof запросы выравнивания требований типа (начиная с C ++ 11)
Операторы сравнения и логические операторы | Codecademy
Используйте эту статью в качестве справочного материала для сравнения JavaScript и логических операторов.
- Операторы сравнения - операторы, которые сравнивают значения и возвращают
true
илиfalse
.Операторы включают:>
,<
,> =
,<=
,===
и! ==
. - Логические операторы - операторы, объединяющие несколько логических выражений или значений и обеспечивающие один логический вывод. К операторам относятся:
&&
,||
и!
.
Операторы сравнения
Возможно, вы знакомы с операторами сравнения из математического класса.Убедимся, что в ваших знаниях нет пробелов.
- Меньше чем (
<
) - возвращаетtrue
, если значение слева меньше значения справа, в противном случае возвращаетсяfalse
. - Greater than (
>
) - возвращаетtrue
, если значение слева больше значения справа, в противном случае возвращаетfalse
. - Меньше или равно (
<=
) - возвращаетtrue
, если значение слева меньше или равно значению справа, в противном случае возвращаетсяfalse
. - Больше или равно (
> =
) - возвращаетtrue
, если значение слева больше или равно значению справа, в противном случае возвращаетсяfalse
. - Equal to (
===
) - возвращаетtrue
, если значение слева равно значению справа, в противном случае возвращаетfalse
. - Не равно (
! ==
) - возвращаетtrue
, если значение слева не равно значению справа, в противном случае возвращаетfalse
.
Логические операторы
Операторы сравнения позволяют нам утверждать равенство оператора с JavaScript. Например, мы можем утверждать, равны ли два значения или выражения с ===
, или одно значение больше другого с >
.
Однако существуют сценарии, в которых мы должны утверждать, истинны ли несколько значений или выражений. В JavaScript мы можем использовать логических операторов , чтобы делать эти утверждения.
Оператор &&
требует, чтобы оба выражения были истинными, чтобы выражение было истинным. Поскольку одно выражение ложно, а другое истинно, выражение ложно и оценивается как false
.
PostgreSQL: Документация: 13: 9.1. Логические операторы
Доступны обычные логические операторы:
логическое
И
логическое
→логическое
логическое
OR
логическое
→логическое
НЕ
логическое
→логическое
SQL использует трехзначную логическую систему с истинным, ложным и нулевым
, что представляет «неизвестно».Обратите внимание на следующие таблицы истинности:
а | б | a И b | a OR b |
---|---|---|---|
ИСТИНА | ИСТИНА | ИСТИНА | ИСТИНА |
ИСТИНА | ЛОЖЬ | ЛОЖЬ | ИСТИНА |
ИСТИНА | НЕТ | НЕТ | ИСТИНА |
ЛОЖНО | ЛОЖЬ | ЛОЖЬ | ЛОЖЬ |
ЛОЖНО | НЕТ | ЛОЖЬ | НЕТ |
ПУСТО | НЕТ | НЕТ | НЕТ |
а | НЕ a |
---|---|
ИСТИНА | ЛОЖЬ |
ЛОЖНО | ИСТИНА |
ПУСТО | НЕТ |
Операторы AND
и OR
являются коммутативными, то есть вы можете переключать левый и правый операнды, не влияя на результат.(Однако не гарантируется, что левый операнд оценивается перед правым операндом. Дополнительную информацию о порядке вычисления подвыражений см. В разделе 4.2.14.)
Что такое логическая логика? Примеры логической логики
5 ноября 2018 г.
Что такое логическая логика?
Булева логика - это форма алгебры, в основе которой лежат три простых слова, известные как булевы операторы: «Или», «И» и «Не». В основе логической логики лежит идея, что все значения либо истинны, либо ложны.В платформе Lotame использование логической логики позволяет создавать более сложные определения аудитории, позволяя создавать аудитории в соответствии с очень конкретным набором определений. В этой статье исследуется использование отдельных логических операторов и их отношение к созданию аудитории.
Пример «ИЛИ»
Пример «И»
Пример «НЕ <»
Логическая логика, проиллюстрированная
Пример работы логической логики при построении аудитории: OR
Логический оператор «ИЛИ» используется для выражения того, что пока выполняется одно из двух или более условий, значение указанного запроса истинно.
Например, для создания аудитории, включающей всех, кто любит мексиканскую, китайскую или французскую кухню, будет применяться следующее определение аудитории:
Использование оператора «ИЛИ» гарантирует, что любой, кто проявил симпатию хотя бы к одной из этих кухонь, будет включен в созданную аудиторию.
Пример работы логической логики при построении аудитории: AND
В качестве логического оператора «И» указывает, что ВСЕ указанные условия должны быть выполнены, чтобы запрос вернул истину.
В случае, если клиент собирал аудиторию и хотел нацелиться только на пользователей, которые проявили симпатию к спортивным автомобилям и Fishing и History, будет применяться следующее определение аудитории:
Использование оператора «И» означает, что пользователь должен соответствовать ВСЕМ указанным критериям, чтобы быть включенным в аудиторию; пользователи, которым нравится только рыбалка или только рыбалка и история (т. д.), будут исключены из этого определения аудитории.
Пример логической логики при построении аудитории: НЕ
<
Логический оператор «НЕ» используется для исключения узлов из определения аудитории. Поскольку это относится к созданию определения аудитории, «НЕ» будет исключать всех пользователей, подпадающих под узел, который был добавлен «НЕ».
Например, для создания аудитории пользователей старше 18 лет (НЕ 13-17 лет), проявляющих интерес к фильмам, будет использоваться следующее определение аудитории:
В данном случае «НЕ» перед 13-17 означает, что в это определение аудитории не будут включены пользователи в этом возрастном диапазоне.Также стоит отметить, что здесь также используется оператор «И». В переводе на простой английский это определение будет читаться как «Пользователи в возрасте от 13 до 17 лет, которые интересуются фильмами.
Пользователи платформы управления данными Lotame (DMP) используют логическую логику для создания аудитории для целевой рекламы, настройки контента и многих других бизнес-приложений. Понимая, кто ваша аудитория, и группируя их по сегментам аудитории, вы можете персонализировать свои сообщения, чтобы повысить взаимодействие с вашими продуктами и услугами.
Узнайте больше о DMP в этом коротком видео:
Хотите узнать больше? Давай поговорим. Мы хотели бы показать вам демонстрацию нашей платформы и то, как она может помочь вашему маркетингу работать на вас, чтобы повысить вовлеченность и коэффициент конверсии. Заполните форму ниже и свяжитесь с нами!
Понимание логических операторов C ++ | Udacity
Простые союзы, такие как «и» и «или», позволяют нам соединять наши идеи - даже самые сложные.
Эти два мощных слова могут играть столь же важную роль в языке программирования C ++, где они используются в качестве логических операторов.
Логические операторы жизненно важны для создания более сложного и динамичного потока управления программой. В этой статье рассказывается, как создавать логические операторы и когда их использовать.
Что такое операторы в C ++?
Операторы - это символы, используемые в C ++ для выполнения вычислений с переменными и значениями. По мере обучения, чтобы стать разработчиком C ++, вы быстро поймете, что операторы играют важную роль в таких областях, как арифметические, реляционные и логические (истинные или ложные) утверждения в коде.
C ++ использует логические значения для проверки истинности или ложности реляционных операторов. Логические значения могут возвращать только 1 (истина) или 0 (ложь) в зависимости от результата сравнения. Как мы увидим ниже, мы можем использовать эти утверждения по-разному, чтобы привести программу к конкретному результату.
Во-первых, давайте посмотрим, как мы можем использовать реляционные операторы для генерации истинных или ложных результатов.
Операторы отношения
Операторы отношения, как вкратце упоминалось выше, работают с переменными с определенными значениями и дают логический результат.Они используют такие символы, как ==,! =, <= И>, чтобы проверить, являются ли два операнда одинаковыми, разными, больше или меньше друг друга. Эти операторы будут выводить 1, если утверждение истинно, и 0, если оно ложно.
Логические операторы
Логические операторы работают только с логическими значениями (или выражениями, такими как операторы отношения, которые возвращают логические значения) и дают собственный логический результат. Операторы, используемые для логических вычислений в C ++:!, && и ||.
Использование логических операторов в C ++?
Как мы увидим, логические операторы хорошо подходят для проверки действительности двух (или более) сравнительных операций.Затем операторы выводят конкретный ответ, основанный на характере оператора и истинности одного или обоих операндов. В C ++ мы часто видим это в форме оператора if / else.
Прежде чем мы сможем более подробно рассмотреть, где логические операторы часто появляются в коде, нам сначала нужно понять их синтаксис. Всего существует три логических оператора:
Оператор «and» (&&)
Логический оператор «и» смотрит на операнды на любой из своих сторон и возвращает «истину», только если оба утверждения верны.Если хотя бы одно из двух утверждений неверно, логическое «и» вернет ложь.
Ниже приведен практический пример того, как мы можем использовать оператор && в C ++:
#include |
Выше мы просим пользователя указать номер.Наш логический оператор «и» проверяет, больше ли число, чем 0, а также меньше или равно 10. Если оба эти утверждения верны, число должно находиться в диапазоне от 1 до 10, и мы можем вывести, что это и есть кейс.
Если введено число 0 или меньше или число больше 10, программа объявит результат «ложным», отвергнув оператор if и вместо этого выведя, что число не находится между 1 и 10.
Оператор «или» (||)
Логический оператор «или» работает аналогично приведенному выше оператору «и».Разница в том, что «или» вернет «истину», если правый или левый операнд верен. || оператор вернет только ложное значение, если оба операнда ложны.
Рассмотрим сценарий, когда выбор одного из двух счастливых чисел от 1 до 10 в игре принесет нам приз. В этом примере мы установим счастливые числа четыре и восемь. Нам нужно будет создать программу на C ++, чтобы определить победителей:
#include |
Когда пользователь приходит поиграть в нашу игру, его просят ввести число. Если они правильно угадывают четыре или восемь, они получают уведомление о том, что выбрали выигрышный номер. Если пользователь вводит любое другое целочисленное значение, ему придется повторить попытку в другой раз.
Оператор «не» (!)
Логический оператор «не» используется для преобразования значения из истинного в ложное или из ложного в истинное. Точно так же, если операнд оценивается как истина, логическое «нет» заставит его оценить как ложь.Если значение операнда ложно, его логический эквивалент «не» будет истинным.
В следующем примере показано одно возможное использование оператора логического «не»:
#include |
Эта программа настроена так, чтобы возвращать истину каждый раз, когда переменная x не равна нулю.Оператор if проверяет, равно ли x 0, что возвращает false для каждого числа, кроме нуля. ! Оператор переворачивает результат с false на true, в результате чего программа выводит истинный результат оператора if:
Введите номер: 786 Вы ввели номер, отличный от 0 |
При использовании логического оператора «не» важно помнить, что он имеет очень высокий уровень приоритета в C ++. Логическое «не» выполняется перед операторами сравнения, такими как равно (==) и больше (> ).При кодировании с логическим «нет» программист должен убедиться, что программа настроена на выполнение операторов в правильном порядке.
В приведенном ниже примере мы видим, как невыполнение этого требования приводит к проблеме:
#include |
В этом примере программа сначала выполнит логический! перед проведением сравнения.При этом программа ошибочно возвращает следующее:
Чтобы все исправить, нам нужно изменить оператор if следующим образом:
Таким образом, программа сначала выполняет реляционную операцию, а затем логическое «не», чтобы привести нас к правильному выводу.
Таблица истинности логических операций
Независимо от того, насколько обширно логическое выражение, при вычислении все сводится к двоичному значению истина или ложь.
Рассматривая только результат операнда «a», операнда «b» и логического оператора, мы можем построить следующую таблицу, которая показывает выходные данные данной логической операции.
а | б | a && b | а || б | ! А |
истинное | правда | правда | правда | ложь |
истинное | ложь | ложь | правда | ложь |
ложный | ложь | ложь | ложь | правда |
ложный | правда | ложь | правда | правда |
Эта таблица дает хороший способ проверить вашу работу с логическими операциями.Программа, которая не возвращает указанный результат по указанным критериям, будет иметь ошибку, которая требует исправления.
Побитовые операторы и логические операторы
Побитовые операторы выглядят и работают аналогично логическим операторам, но работают только со значениями целочисленного типа, а не с логическими значениями. Побитовые операторы сравнивают два целых числа побитно и выводят 1 или 0 в зависимости от результата операции.
Для сравнения побитовое «и» (&) очень похоже на логическое «и» (&&).Точно так же побитовое «или» (|) следует тому же соглашению, что и логическое «или» (||). К счастью, поразрядное «не» (~) существенно отличается от логического «не» (!).
Смешивание этих операторов приведет к ошибкам компиляции в вашей программе.
Изучите C ++ с Udacity
Теперь, когда вы лучше понимаете логические операторы, вы готовы заняться большим количеством возможностей C ++.
В Udacity мы предлагаем интерактивную программу под руководством экспертов, которая выводит начинающих разработчиков на C ++ на новый уровень.Вы даже испытаете свои навыки, написав пять реальных проектов.
Зарегистрируйтесь сегодня в нашей программе C ++ Nanodegree!
Полное руководство по логическим операторам в R | by Linda Ngo
Логические операторы позволяют нам изменять или сравнивать результаты сравнений, выполненных с использованием операторов отношения. Узнайте все, что вам нужно знать о них!
Предположим, мы хотим изменить или сравнить результаты сравнений, выполненных с использованием операторов отношения. Как бы мы это сделали?
R делает это с помощью операторов AND , OR и NOT .
Логические операторы
- Оператор И
и
- Оператор ИЛИ
|
- НЕ оператор
!
Оператор AND принимает два логических значения и возвращает ИСТИНА
, только если оба значения сами ИСТИНА
. Это означает, что ИСТИНА и ИСТИНА
оценивается как ИСТИНА
, но что ЛОЖЬ И ИСТИНА
, ИСТИНА и ЛОЖЬ
и ЛОЖЬ и ЛОЖЬ
оценивается как ЛОЖЬ
.
Только ИСТИНА и ИСТИНА дадут нам ИСТИНУ.
Вместо использования логических значений мы можем использовать результаты сравнений. Предположим, у нас есть переменная x
, равная 12. Чтобы проверить, больше ли эта переменная 5, но меньше 15, мы можем использовать x
больше 5 и x
меньше 15.
x <- 12
x> 5 & x <15
Первая часть, x> 5
будет оценивать как TRUE
, поскольку 12 больше 5. Вторая часть, x <15
также будет оценивать как TRUE
, поскольку 12 также меньше 15.Таким образом, результатом этого выражения будет ИСТИНА
, поскольку ИСТИНА и ИСТИНА
равно ИСТИНА
. Это имеет смысл, потому что 12 находится между 5 и 15.
Однако, если бы x
было 17, выражение x> 5 & x <15
упростилось бы до ИСТИНА и ЛОЖЬ
, что приводит к выражению ЛОЖЬ
.
Для вас
Рассмотрим следующий вектор и переменную:
linkedin <- c (16, 9, 13, 5, 2, 17, 14)
last <- tail (linkedin, 1)
The Вектор linkedin
представляет количество просмотров вашего профиля LinekdIn за последние семь дней.Переменная last
представляет последнее значение вектора linkedin
.
Определите, находится ли переменная last
между 15 и 20, исключая 15, но включая 20.
Решение
# Мы ищем R-эквивалент 15last> 15 & last <= 20
Последняя переменная linkedin - 14, которая не находится между 15 и 20.
Для вас (2)
Рассмотрим следующие векторы:
linkedin <- c (16, 9, 13, 5, 2, 17 , 14)
facebook <- c (17, 7, 5, 16, 8, 13, 14)
Вектор linkedin
представляет просмотры в вашем профиле LinkedIn за последние 7 дней, а вектор facebook
представляет просмотры вашего профиля в Facebook за последние 7 дней.
Определите, когда просмотры LinkedIn превысили 10 и просмотров Facebook не смогли достичь 10 за определенный день. Используйте векторы linkedin
и facebook
.
Решение
# linkedin превышает 10, но facebook меньше 10
linkedin> 10 & facebook <10
Только на третий день просмотров в LinkedIn было больше 10, а в Facebook меньше 10.
Для вас (3)
Рассмотрим следующую матрицу:
views <- matrix (c (linkedin, facebook), nrow = 2, byrow = TRUE)
Переменная linkedin
и facebook
соответствует тем же векторам в предыдущем для вас пытаться.
Матрица просмотров
имеет первую и вторую строки, соответствующие векторам linkedin
и facebook
соответственно.
Определите, когда матрица просмотров
равна числу от 11 до 14, исключая 11 и включая 14.
Решение
# Когда просмотры находятся между 11 (исключая) и 14 (включительно)?
просмотров> 11 & просмотров <= 14
В третий и последний день просмотры в LinkedIn были между 11 (исключая) и 14 (включительно).В шестой и последний день количество просмотров в Facebook было от 11 (исключая) до 14 (включительно).
Оператор ИЛИ (|) работает аналогично, но с той разницей, что только по крайней мере одно из логических значений должно быть равно ИСТИНА
, чтобы вся операция ИЛИ оценивалась как ИСТИНА
.
Это означает, что ИСТИНА | ИСТИНА
равно ИСТИНА
, но также ИСТИНА | ЛОЖЬ
и ЛОЖЬ | ИСТИНА
оценивается как ИСТИНА
. Когда оба логических логических значения FALSE
в операции ИЛИ, поэтому в случае FALSE | ЛОЖЬ
, результат ЛОЖЬ
.Помните, что операция OR не является исключительной операцией or, поэтому TRUE | ИСТИНА
также равно ИСТИНА
.
С оператором AND только TRUE & TRUE
делает TRUE
, все остальное - FALSE
. С оператором OR только FALSE | ЛОЖЬ
делает ЛОЖЬ
, все остальное - ИСТИНА
.
Так же, как и для операций И, мы можем использовать сравнения вместе с оператором ИЛИ. Предположим, у нас есть переменная y
, равная 4.Чтобы узнать, меньше ли эта переменная 5 или больше 15, мы можем использовать следующее выражение:
y <- 4
y <5 | y> 15
R сначала выполнит сравнения, в результате чего TRUE | ЛОЖЬ
, что, в свою очередь, приводит к ИСТИНА
.
Теперь предположим, что y
равно 14. Выражение y <5 | y> 15
теперь принимает значение FALSE | ЛОЖЬ
. Ни одно из сравнений не дает ИСТИНА
, поэтому результат ЛОЖЬ
.
Для вас
Используя те же переменные из последнего, что вы можете попробовать, определите, находится ли last
меньше 5 или больше 10.
linkedin <- c (16, 9, 13, 5, 2, 17 , 14)
last <- tail (linkedin, 1)
Solution
# Последний младше 5 или старше 10?
последняя <5 | last> 10
Последний элемент linkedin - 14, и хотя он меньше 5, он больше 10, что делает выражение истинным.
Для вас (2)
Рассмотрим те же векторы linkedin
и facebook
из предыдущих упражнений.
linkedin <- c (16, 9, 13, 5, 2, 17, 14)
facebook <- c (17, 7, 5, 16, 8, 13, 14)
Определить, когда один или оба социальных профиля посетили не менее 12 раз.
Решение
# Когда один или оба были посещены по крайней мере 12 раз?
linkedin> = 12 | facebook> = 12
В дни 1, 3, 4, 6 и 7 один или оба социальных профиля были посещены не менее 12 раз.
Оператор НЕ, обозначенный восклицательным знаком !
, просто отменяет логическое значение, в котором он используется.То есть ! ИСТИНА
оценивается как ЛОЖЬ
, а ! ЛОЖЬ
оценивается как ИСТИНА
.
Так же, как операторы OR и AND, мы можем использовать оператор NOT в сочетании с логическими операторами. Это не всегда необходимо. Например, ! (X <5)
совпадает с x> = 5
.
Однако в R бывают случаи, когда оператор NOT особенно удобен. Например, встроенная функция R, is.numeric ()
проверяет, является ли объект R числовым.Нет соответствующей встроенной функции, которая проверяет, не является ли это числовым. Чтобы проверить, нам нужно будет отрицать результат (! Is.numeric ()
). Итак, is.numeric (5)
оценивается как TRUE
, поскольку 5 - это число. Если мы отрицаем этот результат с помощью оператора NOT (! Is.numeric (5)
), мы получим FALSE
. Если, однако, мы используем is.numeric ("привет")
, мы получим FALSE
. Отрицание этого результата (! Is.numeric ("hello")
) дает нам ИСТИНА
.
Теперь, как логические операторы работают с векторами и матрицами? Как и операторы отношения, они выполняют операции поэлементно. Рассмотрим эти два вектора:
c (ИСТИНА, ИСТИНА, ЛОЖЬ) & c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
Операция И над этими двумя векторами приводит к вектору с элементами ИСТИНА,
, ЛОЖЬ,
и НЕВЕРНО
.
TRUE FALSE FALSE
Первыми элементами в обоих векторах являются TRUE
, поэтому первый элемент результирующего вектора содержит TRUE
.Точно так же для вторых элементов, где ИСТИНА и ЛОЖЬ
дают ЛОЖЬ
, а в третьих элементах, где ЛОЖЬ и ЛОЖЬ
дают ЛОЖЬ
.
То же самое происходит с оператором ИЛИ:
c (ИСТИНА, ИСТИНА, ЛОЖЬ) | c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
ИСТИНА | ИСТИНА
дает ИСТИНА
, ИСТИНА | FALSE
также дает TRUE
и FALSE | ЛОЖЬ
дает ЛОЖЬ
. Итак, мы получили бы результат:
ИСТИНА ИСТИНА ЛОЖЬ
Оператор НЕ также работает с каждым элементом вектора:
! C (ИСТИНА, ИСТИНА, ЛОЖЬ)
ИСТИНА
преобразуются в ЛОЖЬ
, и FALSE
преобразуются в TRUE
.Итак, мы получили бы результат
FALSE FALSE TRUE
Чтобы вы могли попробовать
Что вернет следующий набор выражений R:
x <- 5
y <- 7
! (! (X <4) & !!! (y> 12))
Решение
FALSE
Чтобы определить ответ, полезно разбить запрос на более мелкие выражения:
Сначала у нас есть левое выражение ! (x <4)
внутреннего выражения (! (X <4) & !!! (y> 12))
.
-
x <4
- посколькуx
равно 5, а5 <4
неверно, это утверждение оценивается какFALSE
-
! (X <4)
- Из шага выше мы определил, чтоx <4
оценивается какFALSE
. Отрицание этого результата дает нам! FALSE
, что соответствуетTRUE
.
Далее у нас есть правильное выражение !!! (y> 12)
внутреннего выражения (! (X <4) & !!! (y> 12))
.
-
y> 12
- Поскольку y равно 7, а7> 12
неверно, это выражение оценивается какFALSE
. -
! (Y> 12)
- Отрицая результат шага 1, мы получаем! FALSE
илиTRUE
. -
!! (y> 12)
- Отрицая результат шага 2, мы получаем! TRUE
илиFALSE
. -
!!! (y> 12)
- Отрицая результат шага 3, получаем! FALSE
илиTRUE
.
Итак, для внутреннего выражения (! (X <4) & !!! (y> 12))
оно оценивается как ИСТИНА и ИСТИНА
, что равно ИСТИНА
.
Внешний оператор НЕ !
отменяет это ИСТИНА
, делая ! (! (X <4) & !!! (y> 12))
равным ! ИСТИНА
или ЛОЖЬ
.
В чем разница между одинарным и двойным амперсандом или вертикальной чертой? В R вы можете использовать как версию с одинарным знаком, так и версию с двойным знаком, но результат логической операции, которую вы выполняете, может быть другим.Наибольшая разница возникает, когда вы используете два типа операций над векторами.
c (ИСТИНА, ИСТИНА, ЛОЖЬ) & c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
Как мы видели ранее, приведенное выше выражение вычисляет вектор:
ИСТИНА ЛОЖЬ ЛОЖЬ
Однако, если мы используем двойной амперсанд , мы просто получаем ИСТИНА
.
c (ИСТИНА, ИСТИНА, ЛОЖЬ) && c (ИСТИНА, ЛОЖЬ, ЛОЖЬ)
Это связано с тем, что операция двойного амперсанда проверяет только первый элемент каждого вектора.