我想要一个bool来判断if条件是否需要反转,我用最直接的方式写这个但看起来很脏!
bool isReverseCondition=true;
int a=0;
bool myCondition=a>0;
if(isReverseCondition){
myCondition=!myCondition;
}
if(myCondition){
printf("OK!");
}
它看起来很脏,特别需要一个临时变量" myCondition"存储我的实际情况,它不仅出现一次!我知道这很简单但不知道要改写:(
有人可以提出建议吗?
答案 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!" );
}