当前,我有以下函数,如果元素是声明的开始或语句的开始,则返回布尔值。
bool start_of_block_element() {
return start_of_declaration() || start_of_statement();
我需要检查它们的XOR是否也为真并输出bool。我不确定如何将它们结合在一起。如果XOR和OR都返回true,则应返回true
我的猜测是:
bool start_of_block_element() {
return (
(start_of_declaration() ^ start_of_statement() ) && ( start_of_declaration() || start_of_statement() )
);
}
这是正确的方法吗?
答案 0 :(得分:1)
假设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()