如果需要组合布尔表达式,我们通常使用逻辑运算符。我想知道表达式是否不使用逻辑运算符。
int x=101;
if(90<=x<=100)
cout<<'A';
此代码仍在控制台上显示“ A”。您能帮我理解如何对布尔表达式求值,以及对布尔表达式求值的方式。
答案 0 :(得分:7)
由于运算符具有相同的优先级,因此表达式从左到右求值:
if( (90 <= x) <= 100 )
if( (90 <= 101) <= 100 ) // substitute x's value
if( true <= 100 ) // evaluate the first <= operator
if( 1 <= 100 ) // implicit integer promotion for true to int
if( true ) // evaluate the second <= operator
要获得所需的比较,可以使用以下条件:
if( 90 <= x && x <= 100)
答案 1 :(得分:2)
这是常见的错误来源,因为它看起来正确,并且在语法上是正确的。
int x=101;
if(90<=x<=100)
这等效于
if ( (90 <= x) <= 100)
是
if ( true <= 100 )
并且由于true
可以转换为1
,因此
if ( true )
答案 2 :(得分:0)
此表达式大致等于
int x=101;
bool b1 = 90 <= x; // true
bool b2 = int(b1) <= 100; // 1 <= 100 // true
if(b2)
cout<<'A';
所以这是真实的结果。