C# 逻辑问题

C# logic question

提问人:grady 提问时间:4/12/2011 更新时间:4/15/2015 访问量:771

问:

我有这些布尔值:

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

现在,谁能解释为什么会这样?这些不应该是一样的吗?

谢谢:)

C# 布尔逻辑

评论


答:

11赞 Darin Dimitrov 4/12/2011 #1

&& 运算符优先 ||这意味着您的第一个表达式等效于:

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

这给出了:

bool test = false || true;

这给出了:

bool test = true;

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

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

这给出了:

bool test1 = false && true;

这给出了:

bool test1 = false;
0赞 Steve Mayne 4/12/2011 #2

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

0赞 detaylor 4/12/2011 #3

第一个计算首先 (),然后计算结果,结果为 ,得到 。false && truefalse|| truetrue

第二个计算括号中的值,然后计算 ,结果为 ,结果为 ,给出true || true&& falsefalse

1赞 Tokk 4/12/2011 #4

在测试中,你有 ,这是假的,然后你有 哪个是 。 在第二种情况下,您首先计算 =>,然后是 .false && truefalse || truetrue(true || true)truefalse && truefalse

0赞 Øyvind Bråthen 4/12/2011 #5

在第一个示例中,首先计算 false 和 true,然后计算为 false。然后 false 或 true 当然被计算为 true。

在第二种情况下,由于 () true 或 true 首先计算为 true,然后 true & false 的计算结果为 false。

所以这是完全有道理的。

0赞 Anand Thangappan 4/12/2011 #6

第一个:

False and True or True

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

第二个:

False and (True or True) = False and True

一个条件失败,所以它的返回 false

0赞 Justin Stryker 4/12/2011 #7

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

第一个是真的,因为该语句正在测试它是真的还是假的。

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

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

0赞 Khemka 4/12/2011 #8

在第一个中,&& 优先于 ||因为您没有显式分组。

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

因此,不同的结果。

0赞 Nandha Kumar 4/15/2015 #9

优先级顺序按以下顺序排列

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

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