为什么这个布尔语句是真的?
a= 10;
b = 0;
7 < a || a == b && b > 9 - a / b因为任何除以0的东西都是错误的
发布于 2017-05-15 13:07:30
由于OR (||)运算符(a > 7)的第一个操作数计算为true,因此它短路,而其他操作数都不计算。因此,整个表达式的计算结果为true。
发布于 2017-05-15 13:08:15
7 < a返回true。因为它是一个||之后,其余的没有被执行。
这是因为true || false是真的,true || true也是真的,所以计算第二个成员只是浪费时间。
发布于 2017-05-15 13:14:05
您的or -运算符||使用惰性计算或短路评估。这意味着,由于第一个表达式7 < a是真的,所以它不会计算任何其他语句,包括除数为零的语句,因为java已经找到了真语句。
如果你真的想得到一个错误,你可以使用这个或-操作符|,它应该强制所有语句的计算。大多数人只使用它作为一个位运算符,但它也是一个非短路版本的||.要想更深入地了解||与|之间的关系,请看这里。
例如,
boolean c = (7 < a | a == b && b > 9 - a / b);将像预期的那样导致ArithmeticExcption。
https://stackoverflow.com/questions/43980370
复制相似问题