除了C ++中的OR,还检查语句的XOR是否也为true

时间:2018-12-06 18:32:06

标签: c++ syntax compiler-construction xor bitwise-xor

当前,我有以下函数,如果元素是声明的开始或语句的开始,则返回布尔值。

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() )

    );
}

这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

假设bool D = start_of_declaration()bool S = start_of_statement()

您需要D || S == trueD ^ S == true。所以基本上,

  

D | S |返回
  -+ --- + ----
  0 | 0 | 0
  1 | 0 | 1
  0 | 1 | 1
  1 | 1 | 0

任何提供此真值表的运算符都会满足您的要求,因此请使用具有此真值表的运算符:

return start_of_declaration() != start_of_statement()