编程中的OR表达式如何工作

时间:2016-03-15 02:41:49

标签: logic

关于OR门的这个奇怪的问题在计算机课上突然出现在我的脑海里,在这里:

当我们向条件语句添加OR门,使得首先指定的条件为真且next为false时,在执行程序时,编译器是否读取了这两个条件?或者一旦它命中为真,它继续下面的代码块?这可能是一个完全愚蠢的问题,但我很好奇。

示例:

if 1 < 2 or 3 != 3:
    <Do Sttuff>

在上面的示例中,编译器是仅检查1 < 2还是检查3 != 3

2 个答案:

答案 0 :(得分:1)

写作时

if 1 < 2 or 3 != 3:

1&lt; 2是真的所以3!= 3永远不会被检查。整个表达式被认为是真实的。这被称为短路。

不要将OR门(硬件)与软件中的OR表达式混淆。

答案 1 :(得分:0)

你问一个关于语言语义的问题,所以答案是:它取决于你如何定义语言的语义。

在逻辑上,我们通常(至少是经典逻辑和直觉主义逻辑)不关心:A或B&lt; =&gt; B或A,所以它们应该给出相同的结果,我们不关心可计算性。

如果要实现某种语言,可以根据需要定义语义。如今,大多数语言都有懒惰的评估,即计算可能的最小量,即,一旦我们现在的结果,不计算剩余的表达式,但语言语义的定义也可能不精确,所以有效的计算取决于编译器。