简单的问题是如何执行在C + +和Python中发生。
如果我有一个if条件如果条件与运算符执行在c + +和python
if ((b == c) and (a == b))
我在上述条件的疑问是,
如果第一部分即(b == c)
是假
那么第二个条件,即(a == b)
执行或无论什么第一部分输出是,第二部分得到执行,无论如何。
简单的问题是如何执行在C + +和Python中发生。
如果我有一个if条件如果条件与运算符执行在c + +和python
if ((b == c) and (a == b))
我在上述条件的疑问是,
如果第一部分即(b == c)
是假
那么第二个条件,即(a == b)
执行或无论什么第一部分输出是,第二部分得到执行,无论如何。
无论是在C++和Python,and
和or
运营支持short-circuiting,即,如果and
左边部分是假的,正确的部分不进行评价;如果or
的左边部分为真,则不评估右边的部分。
在C++中,这是每标准(§5.14/ 1):
的 & & 操作员组左到右。操作数都被内容转换为 布尔 (条款)。 结果是 true 如果两个操作数都是 true 和 false 否则。不像 & , & & 保证左到右 评价:
: 如果第一操作数是 假
和(§5.15/ 1)不评估所述第二操作数
The || 运算符组从左到右。操作数都被内容转换为 布尔 (条款)。它 返回 true 如果它的任一操作数是 true 和 false 否则。不像 | , || 保证从左到右 评价;此外,如果第一个操作数的计算结果为 ,则不评估第二个操作数的实际值为 。
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,它将仅评估第二个参数。
感谢您的宝贵意见。 –