В настоящее время у меня есть следующая функция, которая возвращает 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() )
);
}
Это правильный способ сделать это?
предполагать 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()
Других решений пока нет …