C#逻辑题

发布于 2024-10-31 17:32:49 字数 197 浏览 2 评论 0原文

我有这些布尔值:

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

现在,有人可以解释这是为什么吗?这些不应该是一样的吗?

谢谢 :)

I have those boolean values:

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

Now, can anybody explain why this is? Shouldnt those be the same?

Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

回眸一遍 2024-11-07 17:32:49

&&运算符优先级 高于 ||这意味着您的第一个表达式相当于:

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

which Gives:

bool test = false || true;

which Gives:

bool test = true;

在第二种情况下,您显式对操作数进行分组:

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

which Gives:

bool test1 = false && true;

which Gives:

bool test1 = false;

The && operator has precedence over || meaning that your first expression is equivalent to:

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

which gives:

bool test = false || true;

which gives:

bool test = true;

In the second case you are explicitly grouping the operands:

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

which gives:

bool test1 = false && true;

which gives:

bool test1 = false;
池予 2024-11-07 17:32:49

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

in test you have false && true, which is false and then you have false || true which is true.
In the second case you evaluate (true || true) at first => true and then false && true which is false.

烦人精 2024-11-07 17:32:49

&& 在第一个表达式中首先被求值 - 这意味着您最终得到 false || 的结果true,而不是 false && true 在第二个表达式中。

The && is evaluated first in your first expression - meaning you end up with the result of false || true, rather than false && true in the second expression.

吲‖鸣 2024-11-07 17:32:49

第一个评估 false && true 首先 (false),然后是 || 的结果true,给出 true

第二个首先评估括号中的值,因此 true || true 然后是 && 的结果false,给出 false

The first evaluates false && true first (false) and then the result with || true, which gives true.

The second evaluates the value in the parenthesis first so true || true and then the result with && false, which gives false

×眷恋的温暖 2024-11-07 17:32:49

在你的第一个例子中 false &&首先评估 true,然后评估为 false。那么 false OR true 当然会被评估为 true。

在你的第二个中,由于 () true OR true 首先被评估为 true,然后 true && false 被评估为 false。

所以这是完全有道理的。

In your first example false && true is evaluated first and it evaluated as false. Then false OR true is of course evaluated to true.

In your second, because of the () true OR true is evaluated first to true, then true && false is evaluated to false.

So it makes perfectly sense.

眼泪都笑了 2024-11-07 17:32:49

第一个:

False and True or True

满足一个条件,因此返回 true

第二个:

False and (True or True) = False and True

满足一个条件,因此返回 false

First one:

False and True or True

One condition satisfied, So its return true

Second one:

False and (True or True) = False and True

one condition failed, So its return false

巷雨优美回忆 2024-11-07 17:32:49

布尔测试 = false &&真实 ||真的; // true

第一个为 true,因为该语句正在测试它是 true 还是 false。

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

第二个if false,因为该语句正在测试它是否为真或假。

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

This first is true because the statement is testing whether the it is true or false.

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

The second one if false because the statement is testing whether it is true and false.

咆哮 2024-11-07 17:32:49

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

在第二个中,(...) 导致||首先被评估。

因此结果不同。

In the first one && has precedence over || because you have not grouped explicitly.

In the second one, (...) lead to || being evaluated first.

Thus the differing results.

瘫痪情歌 2024-11-07 17:32:49

优先顺序按以下顺序流动

  1. ()
  2. &&
  3. ||

因此,在第一种情况下 && 接管 || ,在第二种情况下 () 接管 && >

The order of precedence flows in the following order

  1. ()
  2. &&
  3. ||

Hence in first case && takes over || and insecond case () takes over &&

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文