如何删除peer if-else分支中的冗长句子

asa*_*blo 0 c++ if-statement c++11

在这个程序中我有三个if-else分支

int main(){
    if(condition == 1)
        functionA();
    if(condition == 2)
        functionB();
    if(condition == 3)
        functionA&B();
    }
Run Code Online (Sandbox Code Playgroud)

假设条件的值只在1到3之间变化.我想知道是否有条件= 3的方式,所以我不必调用functionA&B()但只使用条件= 1和条件= 2的前一个结果?

上面的详细版本:我在客户端和服务器之间建立了连接,客户端有条件地调用函数并将条件值发送到服务器,服务器获取条件值并调用回调函数.例如,functionA()将发送1,函数B()将发送2.发送可以完成如下:

if((conditionA & 1) > 0)
    functionA();
    send_1();
if((conditionB & 2) > 0?
    functionB();
    send_2();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,服务器对于condA为"1",对于condB为"2",对于condC为"1"和"2".服务器无法判断完整的condC请求,因为3除以1和2.因此,我想知道在2 if分支后是否可以调用发送以及服务器如何收集相应的"1"和"2"到"3"?提前致谢!

Era*_*ran 10

您可以使用按位AND:

if ((condition & 1) > 0) // true when condition is 1 or 3
    functionA();
if ((condition & 2) > 0) // true when condition is 2 or 3
    functionB();
Run Code Online (Sandbox Code Playgroud)

  • 在c ++中,你需要在括号中包含`(condition&1)` (3认同)