実際に、4 つの異なるブール値を true/false に変換してみます。
私の場合は、
True false false false Then true else false
false True false false Then true else false
false false True false Then true else false
false false false True Then true else false
このようにしてみましたが、
int a=1;
int b=0;
int c=0;
int d=0;
int cnt=0;
// A block of code will be executed only when any one of the four variables is 1 and
//the rest of them is 0. and another block will be executed when the above mentioned
//condition become false.
if (a==0) { cnt+=1; }
if (b==0) { cnt+=1; }
if (c==0) { cnt+=1; }
if (d==0) { cnt+=1; }
if (cnt==3) { // true block } else { //false block }
上記のコードは完全に正常に動作していますが、単一の if ステートメントでこの条件をチェックすることに挑戦しました。それから私はこのようにしてみました。
if(!((!(a==0) && !(b==0)) && (!(c==0) && !(d==0))))
{
//true block
}
else
{
//false block
}
上記の条件は、いくつかの組み合わせ (a=1 b=0 c=1 d=1) で失敗しています。誰が問題が何であるかを指摘できますか? または新しいアイデアを提案します。
My objective is convert (3 false + 1 true) into true other wise into false.
[注:理解を目的としてシナリオを示しただけです。a,b,c,dの値は異なる場合があります。私の目的を参照してください。1と0を支持する答えを言わないでください]