我有那些布尔值:
bool test = false && true || true; // true
bool test1 = false && (true || true); // false
现在,任何人都可以解释为什么会这样吗?那些不一样吗?
谢谢:)
答案 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 && true
(false
),然后评估结果|| 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)
优先顺序按以下顺序流动
因此,在第一种情况下,&&
接管||
,而第二种情况()
接管&&