C#逻辑问题

时间:2011-04-12 07:40:52

标签: c# boolean-logic

我有那些布尔值:

bool test = false && true || true; // true
bool test1 = false && (true || true); // false

现在,任何人都可以解释为什么会这样吗?那些不一样吗?

谢谢:)

9 个答案:

答案 0 :(得分:12)

&&运算符有precedence over ||意思是你的第一个表达式相当于:

bool test = (false && true) || true;

给出:

bool test = false || true;

给出:

bool test = true;

在第二种情况下,您明确地对操作数进行分组:

bool test1 = false && (true || true);

给出:

bool test1 = false && true;

给出:

bool test1 = false;

答案 1 :(得分:1)

在测试中你有false && true,这是假的,然后你有false || true true。 在第二种情况下,您首先评估(true || true) => true,然后是false && true false

答案 2 :(得分:0)

&&首先在您的第一个表达式中进行评估 - 这意味着您最终会得到false || true的结果,而不是第二个表达式中的false && true

答案 3 :(得分:0)

第一个首先评估false && truefalse),然后评估结果|| true,结果为true

第二个首先评估括号中的值true || true,然后评估&& false的结果,得到false

答案 4 :(得分:0)

在你的第一个例子中,假和&&首先评估true,并将其评估为false。那么false或者true当然会被评估为真。

在你的第二个,因为()true或者true首先被评估为true,那么true&& false被评估为false。

所以它非常有意义。

答案 5 :(得分:0)

第一个:

False and True or True

满足一个条件,所以它返回真实

第二个:

False and (True or True) = False and True

一个条件失败,所以它返回错误

答案 6 :(得分:0)

bool test = false && true || true; // true

这首先是正确的,因为该语句正在测试它是真还是假。

bool test1 = false && (true || true); // false

第二个如果是假的,因为该语句正在测试它是否为真。

答案 7 :(得分:0)

在第一个&&优先于||因为你没有明确分组。

在第二个中,(...)导致||正在评估中。

因此产生了不同的结果。

答案 8 :(得分:0)

优先顺序按以下顺序流动

  1. ()
  2. &安培;&安培;
  3. ||
  4. 因此,在第一种情况下,&&接管||,而第二种情况()接管&&