Проверка, действительно ли XOR также верно для операторов, в дополнение к OR в c ++ - PullRequest
0 голосов
/ 06 декабря 2018

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

bool start_of_block_element() {
     return start_of_declaration() || start_of_statement();

Мне нужно проверить, верно ли XOR для них, и вывести bool.Я не уверен, как объединить их вместе.Он должен возвращать true, если XOR и OR возвращают true

Я думаю:

bool start_of_block_element() {
    return ( 

      (start_of_declaration() ^ start_of_statement() ) && ( start_of_declaration() || start_of_statement() )

    );
}

Это правильный способ сделать это?

1 Ответ

0 голосов
/ 06 декабря 2018

Предположим, bool D = start_of_declaration() и bool S = start_of_statement()

Вы хотите D || S == true и D ^ S == true.В общем,

D |S |возврат
- + --- + ----
0 |0 |0
1 |0 |1
0 |1 |1
1 |1 |0

Любой оператор, который предоставляет эту таблицу истинности, удовлетворит ваши требования, поэтому используйте оператор, который имеет эту таблицу истинности:

return start_of_declaration() != start_of_statement()
...