2

我有这个类,它有一个 foo 方法和一个 main 方法,其中我有一些变量和一个打印语句。

public static boolean foo(int x, boolean b) {
    if (x < 0) {
          return true;
    }
    return !b; 
}

假设我打印以下内容:

foo (-3, c || !c)

我无法理解 || 应该做的。我在 main 中声明了 boolean c = false,但我看不出它如何选择输入 c (false) 或 !c (true)。另外,附带问题:布尔变量前面的感叹号只会给出相反的结果吗?即,如果输入为假,而 foo 返回 !b,它会返回真吗?

4

5 回答 5

3

可以这么说,这是一个重言式,总是正确的。

c || !c 意思是:“c OR not c”。其中之一总是正确的。

于 2012-12-07T21:41:17.167 回答
1

“||” 表示 OR,所以任何 x || !x 将始终返回 true,无论您将 x 声明为 false 还是 true。

于 2012-12-07T21:45:21.777 回答
1

我看不出它如何选择输入 c (false) 或 !c (true)

这不是“选择输入”两种不同的可能性。它传递的是评估结果的值一个布尔值。 c || !c

注意:对于 的任何布尔值,x || !x将始终评估为。truex

于 2012-12-07T21:41:34.600 回答
1

c || !c将永远是true-您不妨将代码替换为

foo (-3, true)
于 2012-12-07T21:41:51.770 回答
1

If you declared c as:

 boolean c = false;// or true

then c || !c will always result into true.

so you method call foo (-3, c || !c) is nothing but equivalent to foo (-3, true)

于 2012-12-07T21:42:34.800 回答