为了实现逻辑和返回真实,两个操作数必须评估为真。如果第一个操作数计算为错误的,逻辑的,知道它必须返回错误,无论第二个操作数是否计算为真或假。在这种情况下,逻辑和运算符将继续进行,并立即返回错误,甚至没有评估第二个操作数!这被称为短路评估,它主要是为了优化的目的。
同样,如果第一个操作数为逻辑或是真的,那么整个或条件必须评估为真,第二个操作数不需要被评估。
短路评估提出了另一个机会,以显示为什么运营商,导致的副作用不应该被使用在复合表达式。考虑下面的代码片断:
一
二
如果(X = = = 1 & Y + + = = 2)
做某事
如果X不等于1,有条件的必须是假的,所以Y + +永远不会得到评价!因此,Y只会递增,如果x的值为1,这可能不是程序员想要的!
与逻辑或运算,新程序员有时混淆逻辑与运算符(&&)与按位AND运算符(&)。
混合和ORs
混合逻辑和逻辑或运算符在相同的表达往往是不能避免的,但它是一个充满潜在危险的区域。
许多程序员认为,逻辑和逻辑或具有相同的优先级(或忘记,他们不这样做),就像加法/减法和乘法/除法做的一样。然而,逻辑与逻辑或具有更高的优先级,因此逻辑和运营商将评估在逻辑或运算符(除非他们已经括号)。
因此,新的程序员会经常写表达式如value1 value2和3 | |。因为逻辑和具有更高的优先级&#
同样,如果第一个操作数为逻辑或是真的,那么整个或条件必须评估为真,第二个操作数不需要被评估。
短路评估提出了另一个机会,以显示为什么运营商,导致的副作用不应该被使用在复合表达式。考虑下面的代码片断:
一
二
如果(X = = = 1 & Y + + = = 2)
做某事
如果X不等于1,有条件的必须是假的,所以Y + +永远不会得到评价!因此,Y只会递增,如果x的值为1,这可能不是程序员想要的!
与逻辑或运算,新程序员有时混淆逻辑与运算符(&&)与按位AND运算符(&)。
混合和ORs
混合逻辑和逻辑或运算符在相同的表达往往是不能避免的,但它是一个充满潜在危险的区域。
许多程序员认为,逻辑和逻辑或具有相同的优先级(或忘记,他们不这样做),就像加法/减法和乘法/除法做的一样。然而,逻辑与逻辑或具有更高的优先级,因此逻辑和运营商将评估在逻辑或运算符(除非他们已经括号)。
因此,新的程序员会经常写表达式如value1 value2和3 | |。因为逻辑和具有更高的优先级&#