Я столкнулся с проблемой кода. После того, как я закончил, я посмотрел на другие ответы. Я видел ответ, который я изо всех сил пытаюсь понять.
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file
#include "catch.hpp"
bool willYou(bool young, bool beautiful, bool loved)
{
return (young & beautiful) ^ loved;
}
TEST_CASE("willYou are computed", "[willYou]")
{
REQUIRE(willYou(true, true, true) == false);
REQUIRE(willYou(true, false, true) == true);
REQUIRE(willYou(false, false, false) == false);
REQUIRE(willYou(false, false, true) == true);
}
Если вам нужна информация, предоставленная для вызова (я не думаю, что она здесь необходима), то это она.
Once Mary heard a famous song, and a line from it stuck in her head. That line was "Will you still love me when I'm no longer young and beautiful?". Mary believes that a person is loved if and only if he/she is both young and beautiful, but this is quite a depressing thought, so she wants to put her belief to the test.
Knowing whether a person is young, beautiful and loved, find out if they contradict Mary's belief.
A person contradicts Mary's belief if one of the following statements is true:
they are young and beautiful but not loved;
they are loved but not young or not beautiful.
Example
For young = true, beautiful = true, and loved = true, the output should be
willYou(young, beautiful, loved) = false.
Young and beautiful people are loved according to Mary's belief.
For young = true, beautiful = false, and loved = true, the output should be
willYou(young, beautiful, loved) = true.
Mary doesn't believe that not beautiful people can be loved.
Input/Output
[execution time limit] 0.5 seconds (cpp)
[input] boolean young
[input] boolean beautiful
[input] boolean loved
[output] boolean
true if the person contradicts Mary's belief, false otherwise.
Что мне не удается gr asp, как оператор ^ используется здесь, чтобы получить желаемый логический результат? Я создал эти тесты, используя Catch2 . Начиная с GeeksForGeeks он просто заявляет ...
^ (битовое XOR) в C или C ++ принимает два числа в качестве операндов и делает XOR для каждого бита из двух чисел. Результат XOR равен 1, если два бита различны.
Ну, почти наверняка истина и ложь здесь будут 1 и 0. Так что то, что я предполагал в первом тестовом примере, вернет 1 или правда, но это ложь или 0? Если все верно, почему это ложно? Я понял, что история пытается объяснить это здесь. Но в истории говорится, что если ты молод и красив, то тебя любят. Я не уверен, неправильно ли я понимаю это утверждение, или это просто плохое объяснение (я начинаю думать, что это просто плохо). В любом случае, мне нужна помощь, чтобы попытаться понять этого оператора больше, и в основном gr asp, что все это значит. Я просто потерян здесь.