Elegantly determine if more than one boolean is “true”

前端 未结 22 1104
深忆病人
深忆病人 2020-12-04 13:40

I have a set of five boolean values. If more than one of these are true I want to excecute a particular function. What is the most elegant way you can think of that would al

22条回答
  •  时光说笑
    2020-12-04 14:20

    Casting to ints and summing should work, but it's a bit ugly and in some languages may not be possible.

    How about something like

    int count = (bool1? 1:0) + (bool2? 1:0) + (bool3? 1:0) + (bool4? 1:0) + (bool5? 1:0);
    

    Or if you don't care about space, you could just precompute the truth table and use the bools as indices:

    if (morethanone[bool1][bool2][bool3][bool4][bool5]) {
     ... do something ...
    }
    

提交回复
热议问题