true (C++)
Это ключевое слово является одним из двух значений для переменной типа bool или условного выражения (условное выражение теперь является истинным логическим выражением). Если i имеет тип bool , инструкция i = true; назначается true i .
Пример
// bool_true.cpp #include int main()
См. также
Обратная связь
Были ли сведения на этой странице полезными?
Обратная связь
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.
Отправить и просмотреть отзыв по
Истинные и ложные операторы — обрабатывают объекты как логическое значение
Оператор true возвращает логическое значение true , указывающее, что его операнду определенно верно, а false оператор возвращает bool значение true , указывающее, что его операнда определенно false.
Обратите внимание, что тип, реализующий оба true оператора, false должен соответствовать следующей семантике:
- «Является ли этот объект истинным?» разрешает оператору true . Оператор возвращает, true true если объект имеет значение true . Ответ : «Да, этот объект имеет значение true».
- «Является ли этот объект ложным?» разрешает оператору false . Оператор возвращает, false true если объект имеет значение false . Ответ : «Да, этот объект имеет значение false»
false Операторы true не гарантированно дополняют друг друга. То есть оба оператора true и false могут вернуть значение bool false для одного операнда. Если тип определяет один из этих двух операторов, он также должен определить другой оператор.
Используйте тип bool? , если вам нужно использовать трехзначную логику (например, при работе с базами данных, которые поддерживают трехзначный логический тип). В C# предоставляются операторы & и | , которые поддерживают троичную логику с операндами bool? . См. подробнее о логических операторах, поддерживающих значение NULL в описании логических операторов.
Логические выражения
Тип с определенным оператором true может быть типом результата управляющего условного выражения в операторах if, do, while и for и условном операторе ?: . Дополнительные сведения см. в описании логических выражений в спецификации языка C#.
Пользовательские условные логические операторы
Если тип с определенными операторами true и false перегружает логические операторы OR | или AND & определенным образом, условные логические операторы OR || или AND && соответственно могут вычисляться для операндов этого типа. Дополнительные сведения см. в разделе Пользовательские условные логические операторы в Спецификации языка C#.
Пример
В следующем примере представлен тип, который определяет операторы true и false . Этот тип также перегружает логический оператор И & таким образом, что оператор && может быть вычислен для операндов этого типа.
public struct LaunchStatus < public static readonly LaunchStatus Green = new LaunchStatus(0); public static readonly LaunchStatus Yellow = new LaunchStatus(1); public static readonly LaunchStatus Red = new LaunchStatus(2); private int status; private LaunchStatus(int status) < this.status = status; >public static bool operator true(LaunchStatus x) => x == Green || x == Yellow; public static bool operator false(LaunchStatus x) => x == Red; public static LaunchStatus operator &(LaunchStatus x, LaunchStatus y) < if (x == Red || y == Red || (x == Yellow && y == Yellow)) < return Red; >if (x == Yellow || y == Yellow) < return Yellow; >return Green; > public static bool operator ==(LaunchStatus x, LaunchStatus y) => x.status == y.status; public static bool operator !=(LaunchStatus x, LaunchStatus y) => !(x == y); public override bool Equals(object obj) => obj is LaunchStatus other && this == other; public override int GetHashCode() => status; > public class LaunchStatusTest < public static void Main() < LaunchStatus okToLaunch = GetFuelLaunchStatus() && GetNavigationLaunchStatus(); Console.WriteLine(okToLaunch ? "Ready to go!" : "Wait!"); >static LaunchStatus GetFuelLaunchStatus() < Console.WriteLine("Getting fuel launch status. "); return LaunchStatus.Red; >static LaunchStatus GetNavigationLaunchStatus() < Console.WriteLine("Getting navigation launch status. "); return LaunchStatus.Yellow; >>
Обратите внимание на поведение сокращенного вычисления оператора && . GetFuelLaunchStatus Когда метод возвращается LaunchStatus.Red , правый операн && оператора не вычисляется. Это обусловлено тем, что LaunchStatus.Red имеет значение false. Результат логического оператора И не зависит от значения правого операнда. Выходные данные примера могут быть следующими:
Getting fuel launch status. Wait!
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
bool тип данных в языке Си.
В языке Си нет типа данных bool и значений true и false.
В заголовочном файле определены макросы bool, true и false, которые позволяют использовать синтаксис аналогичный языку C++.
#include // prinf() #include // bool, true, false int main() < int counter = 0; bool flag = true; while(flag)< if(counter == 5)< flag = false; >printf("counter = %d, flag = %d \n", counter, flag); counter++; > return 0; >
Значение true = 1, а false = 0. Оператор if выполняется при любом ненулевом значении в скобках оператора.
#include // printf() #include // true, false int main() < printf("true = %d, false = %d \n", true, false); // true = 1, false = 0 if(-1)< // Будет выведено "only 0 == false" printf("only 0 == false \n"); // Любое ненулевое значение это true (срабатывание if) >>
Понравилась страница?
Добавить в закладки
Или поделиться!
True c что это
Условные выражения представляют собой некоторое условие и возвращают значение типа bool , то есть значение true (если условие истинно), либо значение false (если условие ложно). К условным выражениям относятся операции сравнения и логические операции.
Операции сравнения
В языке программирования C++ есть следующие операции сравнения:
-
== Операция «равно». Возвращает true, если оба операнда равны, и false, если они не равны:
int a ; int b ; bool c ; // false bool d ; // true
int a ; int b ; bool c b>; // true
bool c ; // false
bool c = 10bool c = 10 >= 4; // true bool d = 10 >= 14; // falsebool c ; // true bool d = 4 != 4; // falseСтоит отметить, что если мы выводим значение типа bool на консоль, то по умолчанию на консоль выводится 1 (если true) и 0 (если false):
#include int main() < int a ; int b ; bool c ; // false bool d ; // true std::cout std::boolalpha:#include int main() < int a ; int b ; bool c ; // false bool d ; // true std::cout ! (операция отрицания)Унарная операция, которая возвращает true, если операнд равен false. Если операнд равен true, операция возвращает false.
bool a ; bool b ; // false bool c ; // truebool a ; bool b ; bool c ; // false bool d ; // truebool a ; bool b ; bool c ; // true bool d ; // falsebool a ; bool b ; bool c ; // true bool d ; // false bool d ; // falseЛогические операции удобно применять для объединения операций сравнения или других логических операций:
#include int main() < int a ; int b ; bool result1 = a ==5 && b > 8; // если и a ==5, и b > 8 bool result2 = a ==5 || b > 8; // если или a ==5, или b > 8 (или оба варианты истины) bool result3 = a ==5 ^ b > 8; // если оба операнда возвращают разные значения std::cout 8) - " 8) - " 8) - "
Стоит учитывать, что операции сравнения имеют больший приоритет, чем логические операции. Поэтому в выражении a ==5 && b > 8 вначале будут выполняться подвыражения - операции сравнения a ==5 и b > 8 , а затем собственно операция логического умножения.
В данном случае первое условие a ==5 && b > 8 будет истинно, если верны одновременно обе операции сравнения. А условие a ==5 || b > 8 будет верно, если хотя бы одна из операций сравнения возвращает true. Соответственно мы получим следующий консольный вывод:
(a ==5 && b > 8) - false (a ==5 || b > 8) - true (a ==5 ^ b > 8) - trueСтоит отметить, что логические операторы && и || представляют операторы сокращенного вычисления ( short-circuit evaluation ). Это значит, что если первый операнд операции достаточен для того, чтобы определить результат всей операции, то второй операнд не вычисляется. Так, возьмем следующую операцию:
int a ; int b ; bool result1 = a ==6 && b ==8;Первый операнд, который представляет выражение a ==6 , возвращает false . В этом случае для операции && нет смысла вычислять второй операнд, поскольку результат операции в любом случае будет равен false .
Аналогично обстоит дело с операцией || :
int a ; int b ; bool result1 = a ==5 || b ==0;Первый операнд, который представляет выражение a ==5 , возвращает true . В этом случае для операции || нет смысла вычислять второй операнд, поскольку результат операции в любом случае будет равен true .