转换&& (逻辑和)运算符进入|| (逻辑或)运算符

时间:2014-11-20 06:13:30

标签: c

bool a,b;

A)
if (a && b)
    return true;
else
    return false;

B)
if (!a || !b)
    return false;
else
    return true;
我有点困惑。是A& B等价??

2 个答案:

答案 0 :(得分:7)

是的,因为De Morgan的法律,它们是等价的:

!(a && b) == !a || !b

因此

 (a && b) == !(!a || !b)

然而,在任何体面的公司,如果编写这样的代码,就会很快被解雇。

if (<condition>)
    return true;
else
    return false;

是多余的,写起来更具可读性

return <condition>;

代替。 (如果您需要始终确保0或1结果,可能return <condition> != 0,但代码中已经是这种情况,因为&&||保证会产生0或1。)

答案 1 :(得分:1)

是的。第一个是简单地检查它们是否都是真的,第二个检查它们中的任何一个是否为假。如果两者都是真的,它们都仍然返回true,否则返回false。