将此if-then逻辑转换为布尔表达式?

Ear*_*rlz 2 algorithm binary boolean-logic bit-manipulation

我在使这段代码更简洁(最好是一个布尔表达式)时有点大脑屁

这是我的代码:

                    if (d.Unemployed)
                    {
                        if (type.Unemployed)
                        {
                            tmp.Unemployed = true;
                        }
                        else
                        {
                            tmp.Unemployed = false;
                        }
                    }
                    else
                    {
                        if (type.Unemployed)
                        {
                            tmp.Unemployed = false;
                        }
                        else
                        {
                            tmp.Unemployed = true;
                        }
                    }
Run Code Online (Sandbox Code Playgroud)

基本的一点是,如果任一typed不失业,则tmp应该设置为不失业.

MRA*_*RAB 13

怎么样:

tmp.Unemployed = type.Unemployed == d.Unemployed;
Run Code Online (Sandbox Code Playgroud)


Nic*_*kis 8

如果我们按照代码构建真值表,我们得到

d  | type | tmp
---+------+----
1  |   1  |  1
---+------+----
1  |   0  |  0
----+-----+----
0  |   1  |  0
----+-----+----
0  |   0  |  1
Run Code Online (Sandbox Code Playgroud)

上面相当于操作的否定xor

tmp = not (d xor type)
Run Code Online (Sandbox Code Playgroud)

如果语言没有运算符,xor我们可以使用!=on 布尔值。

tmp = ! (d != type);
// or
tmp = d == type;
Run Code Online (Sandbox Code Playgroud)