如何简化这段代码逻辑? (反转条件一段时间)

时间:2015-11-12 05:09:14

标签: c

我想要一个bool来判断if条件是否需要反转,我用最直接的方式写这个但看起来很脏!

bool isReverseCondition=true;
int a=0;
bool myCondition=a>0;
if(isReverseCondition){
    myCondition=!myCondition;
}
if(myCondition){
    printf("OK!");
}

它看起来很脏,特别需要一个临时变量" myCondition"存储我的实际情况,它不仅出现一次!我知道这很简单但不知道要改写:(

有人可以提出建议吗?

5 个答案:

答案 0 :(得分:4)

您可以使用xor运算符,如

bool myCondition = (a > 0) ^ isReverseCondition;

答案 1 :(得分:2)

您可以尝试使用三元运算符替换其中一个if语句:

bool isReverseCondition = true;
int a = 0;
bool myCondition = isReverseCondition ? a <= 0 : a > 0;
if (myCondition) {
    printf("OK!");
}

答案 2 :(得分:0)

我的建议:

bool myCondition = (isReverseCondition ? !(a>0) : (a>0));

答案 3 :(得分:0)

实际上bool myCondition = !(a > 0);也应该有效,因为首先会计算括号中的表达式,然后它才会被反转。基本上你的代码是做什么的。检查isReverseCondition是不必要的,因为它总是正确的。

答案 4 :(得分:0)

你可以把它减少到:

 int main(  )
{
  bool isReverseCondition = 0;
  int a = 0;
  bool myCondition = a > 0;

  myCondition = isReverseCondition;

  if ( myCondition )
    printf( "OK!" );
  else
    printf( "NOT OK!" );
}