Правда и Ложь для && логики и ||Логическая таблица - PullRequest
45 голосов
/ 28 сентября 2011

Таблица true / false для языка C

Я слышал о таблице true false для языка C для и && или ||это своего рода математика, для которой говорят, что если true + true = true и false + true = false

Я просто немного запутался в этом и попытался провести исследование, но не смог найтитаблицы

Я просто хочу иметь эту таблицу для своих заметок, так как я сделаю больше на языке Си

, если кто-то может привести меня на сайт или ресурсы, где они объясняют об этом подробнее


Я отредактировал свой оригинальный вопрос, чтобы сделать его заметкой для собственного исследования.Спасибо @thiton за отличные ссылки, а остальные за отличный ответ / ресурсы.

Logical AND (&&)

false && false: false

false && true: false

true && false: false

true && true: true

Логическое ИЛИ (||)

false || false: false

false || true: true

true || false: true

true || true: true

Логическое НЕ (!)

!false: true

!true: false

Ответы [ 5 ]

12 голосов
/ 28 сентября 2011

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

6 голосов
/ 28 сентября 2011

Вы думаете о Булевой алгебре .

5 голосов
/ 28 сентября 2011

Значения истины можно описать с помощью Булевой алгебры . Статья также содержит таблицы для and и or. Это должно помочь вам начать или еще больше запутаться.

4 голосов
/ 28 сентября 2011

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

0 голосов
/ 02 октября 2018

Я хотел бы добавить к уже хорошим ответам:

Символы '+', '*' и '-' иногда используются в качестве кратких обозначений в некоторых старых учебниках для ИЛИ, ∨ и И,∧ и НЕ, ¬ логические операторы в алгебре Була.В C / C ++, конечно, мы используем "и", "&&" и "или", "||"и "not", "!".

Остерегайтесь:"true + true" оценивается как 2 в C / C ++ через внутреннее представление true и false как1 и 0, и неявное приведение к int!

int main ()
{
  std::cout <<  "true - true = " << true - true << std::endl;
// This can be used as signum function:
// "(x > 0) - (x < 0)" evaluates to +1 or -1 for numbers.
  std::cout <<  "true - false = " << true - false << std::endl;
  std::cout <<  "false - true = " << false - true << std::endl;
  std::cout <<  "false - false = " << false - false << std::endl << std::endl;

  std::cout <<  "true + true = " << true + true << std::endl;
  std::cout <<  "true + false = " << true + false << std::endl;
  std::cout <<  "false + true = " << false + true << std::endl;
  std::cout <<  "false + false = " << false + false << std::endl << std::endl;

  std::cout <<  "true * true = " << true * true << std::endl;
  std::cout <<  "true * false = " << true * false << std::endl;
  std::cout <<  "false * true = " << false * true << std::endl;
  std::cout <<  "false * false = " << false * false << std::endl << std::endl;

  std::cout <<  "true / true = " << true / true << std::endl;
  //  std::cout <<  true / false << std::endl; ///-Wdiv-by-zero
  std::cout <<  "false / true = " << false / true << std::endl << std::endl;
  //  std::cout <<  false / false << std::endl << std::endl; ///-Wdiv-by-zero

  std::cout <<  "(true || true) = " << (true || true) << std::endl;
  std::cout <<  "(true || false) = " << (true || false) << std::endl;
  std::cout <<  "(false || true) = " << (false || true) << std::endl;
  std::cout <<  "(false || false) = " << (false || false) << std::endl << std::endl;

  std::cout <<  "(true && true) = " << (true && true) << std::endl;
  std::cout <<  "(true && false) = " << (true && false) << std::endl;
  std::cout <<  "(false && true) = " << (false && true) << std::endl;
  std::cout <<  "(false && false) = " << (false && false) << std::endl << std::endl;

}

приводит к:

true - true = 0
true - false = 1
false - true = -1
false - false = 0

true + true = 2
true + false = 1
false + true = 1
false + false = 0

true * true = 1
true * false = 0
false * true = 0
false * false = 0

true / true = 1
false / true = 0

(true || true) = 1
(true || false) = 1
(false || true) = 1
(false || false) = 0

(true && true) = 1
(true && false) = 0
(false && true) = 0
(false && false) = 0
...