2015-10-15 29 views
2

简单的问题是如何执行在C + +和Python中发生。
如果我有一个if条件如果条件与运算符执行在c + +和python

if ((b == c) and (a == b)) 

我在上述条件的疑问是,
如果第一部分即(b == c)
那么第二个条件,即(a == b)执行或无论什么第一部分输出是,第二部分得到执行,无论如何。

回答

4

无论是在C++和Python,andor运营支持short-circuiting,即,如果and左边部分是假的,正确的部分不进行评价;如果or的左边部分为真,则不评估右边的部分。

在C++中,这是每标准(§5.14/ 1):

的 & & 操作员组左到右。操作数都被内容转换为 布尔 (条款)。 结果是 true 如果两个操作数都是 true 和 false 否则。不像 & , & & 保证左到右 评价:

如果第一操作数是 假

和(§5.15/ 1)不评估所述第二操作数

The || 运算符组从左到右。操作数都被内容转换为 布尔 (条款)。它 返回 true 如果它的任一操作数是 true 和 false 否则。不像 | , || 保证从左到右 评价;此外,如果第一个操作数的计算结果为 ,则不评估第二个操作数的实际值为

在蟒也设置在该文档(python2python3)提及:

x or y | if x is false, then y, else x (1)
x and y | if x is false, then x, else y (2)

注:

(1)这是一个短路运算符,因此只有在第一个参数为False时才会计算第二个参数。
(2)这是一个短路运算符,因此如果第一个参数为True,它将仅评估第二个参数。

+0

感谢您的宝贵意见。 –