当其中一个条件为FALSE时,为什么IF(A || B)条件被评估为TRUE?

时间:2017-09-18 04:15:39

标签: if-statement binary-search-tree

    private void case1(Tree t, Tree root) {  
    //System.out.println(root.left != t);
    if (root.left != t || root.right != t)
        case1(t, (root.value > t.value) ? root.left : root.right);
    else {
        if (root.left == t)
            root.left = null;
        else
            root.right = null;
    }

为什么即使root.left实际上等于't',第一个IF条件也会被评估为TRUE?我已经通过打印到控制台验证了,第一个条件确实是假的。所以IF条件应该是假的,但仍然会对语句进行评估。整个代码非常大;如有必要,我可以提供更多的片段。

1 个答案:

答案 0 :(得分:0)

使用&&作为||对于(OR)运算符,好像即使一个语句为真,它也将返回true;如果是(AND),则if中的两个语句必须为true,然后才返回true。