If statement IF语句如何与AND和OR一起工作?
假设我有以下通用语言代码:If statement IF语句如何与AND和OR一起工作?,if-statement,logical-operators,boolean-logic,If Statement,Logical Operators,Boolean Logic,假设我有以下通用语言代码: a = 1 b = 2 IF a == 3 AND b == 2: do something ELSE: do something 如果a==3为false,则程序不需要检查第二部分,因为对于任何n值,结果总是false 以与或相同的方式: a = 1 b = 2 IF a == 1 OR b == 3: do something ELSE: do something 如果a==1为真,程序就不需要检
a = 1
b = 2
IF a == 3 AND b == 2:
do something
ELSE:
do something
如果a==3为false,则程序不需要检查第二部分,因为对于任何n值,结果总是false
以与或相同的方式:
a = 1
b = 2
IF a == 1 OR b == 3:
do something
ELSE:
do something
如果a==1为真,程序就不需要检查b==3,因为b始终为真
我想知道在这些情况下,程序是否在第一部分停止。这很可能取决于语言。我知道在C/C++中,在and语句中,如果a==3,它实际上只会检查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;
}
这取决于您使用的语言。在这种情况下,大多数编程语言都不会计算条件的第二部分,但有些语言可能会这样做。您是否有任何说明这一点的参考/文档?我找不到你正在使用的语言,程序甚至可能不做第一次检查,因为如果代码被编译,整个if-else可以与
a
和b
一起优化,这样程序中只剩下一个做某事
。
Hello WorldCALL TRUE
TRUE
...Program finished with exit code 0
Press ENTER to exit console.