#include <stdio.h>
int main(void)
{
int i=10;
if(i==20 || 30)
printf("True");
else
printf("False");
return 0;
}
//提供输出:True //请告诉我如何评估这个if循环
答案 0 :(得分:4)
这里没有循环..
只需一次条件检查,具有以下条件。
if(i==20 || 30)
首先,您应该知道,在条件检查中,任何非零值都将被视为True
。
因此,首先使用值i
检查20
,如果为真,则打印True
,否则会检查下一个条件,因为中间有OR
。 SInce下一个条件是非零,这总是正确的,因此它进入并打印True
。
注意:此程序将始终打印True
,因为下一个条件始终为true,并且其间只有一个OR
,只需要其中一个条件是的。
答案 1 :(得分:2)
我有一种感觉,你想检查&#34;如果我是20或30&#34;。其语法是&#34; if(i是20)或(i是30)&#34;。将该逻辑转换为代码是:
if ( i == 20 || i == 30 )
使用时
if ( i == 20 || 30 )
翻译为:
if ( (i == 20) || 30 )
无论(i == 20)
的评估结果如何,条件表达式总是会计算为&#34; true&#34;因为30
是一个非零值。
答案 2 :(得分:1)
你的if语句是两个条件 首先是(i == 20),第二个是30 第二个条件是30,这总是正确的。 对于&#34; OR&#34;操作任何一个true都足以执行if语句 所以if下的语句是executecd
答案 3 :(得分:0)
在您的代码中
i==20
提供结果false
,因为i=10
i==20 || 30
等于false || 30
给出结果true
,因为条件检查中30(或非零值)等于true
。
应该是:
if((i==20) || (i==30))
答案 4 :(得分:0)
表达式if(i==20 || 30)
结果为真(非零)因此您将输出视为真。将根据运算符的计算优先级来计算表达式。 ==
的优先级高于||
,因此i==20
将首先进行评估,结果如下所示
if( true || 30 )
现在运算符为||
,首先检查左操作数是否为真,如果是块则控制进入并打印为真。这称为短路评估。如果我们有逻辑||
运算符,首先将评估Left操作数。如果左操作数为true,则编译器不会评估右操作数。