【问题标题】:How IF statement works with AND and OR?IF 语句如何与 AND 和 OR 一起使用?
【发布时间】:2018-03-08 16:59:24
【问题描述】:

假设我有以下通用语言代码:

a = 1
b = 2
IF a == 3 AND b == 2:
  do something
ELSE:
  do something

如果 a == 3 为假,则程序不需要检查第二部分,因为任何 n 值都会导致结果为假。

与或的方式相同:

    a = 1
    b = 2
    IF a == 1 OR b == 3:
      do something
    ELSE:
      do something

如果 a == 1 为真,则程序不需要检查 b == 3 是否为真。

我想知道在这些情况下程序是否在第一部分停止。

【问题讨论】:

  • 这取决于您使用的语言。在这种情况下,大多数编程语言不会评估条件的第二部分,但有些可能会。
  • 您有任何参考/文档可以证明这一点吗?我找不到
  • 根据您使用的语言,程序甚至可能不会进行第一次检查,因为如果代码被编译,整个 if-else 可以与 a 和 @987654325 一起优化@,所以程序中只剩下一个do something

标签: if-statement logical-operators boolean-logic


【解决方案1】:

这很可能取决于语言。我知道在 C/C++ 中,如果 a==3 在 and 语句的情况下,它确实只会检查 b==2 。我对 or 语句并不肯定,但我只是通过运行它进行了检查,我得到的输出表明只执行了 or 语句的第一部分。我建议您尝试编写自己的示例以在将来测试此类问题。

#include <stdio.h>

int call_false()
{
    printf("CALL FALSE \n\r");
    return 0;
}

int call_true()
{
    printf("CALL TRUE \n\r");
    return 1;
}

int main()
{
    printf("Hello World");
    int a = 1;
    int b = 2;
    if( a == call_true() || b == call_false())
    {
        printf("TRUE \n\r");
    }else
    {
        printf("FALSE");
    }
    return 0;
}

给出以下输出:

Hello WorldCALL TRUE                                                                                                                                                              
TRUE                                                                                                                                                                              


...Program finished with exit code 0                                                                                                                                              
Press ENTER to exit console.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多