0

如果需要组合布尔表达式,我们通常使用逻辑运算符。如果不使用逻辑运算符,我想知道表达式。

int x=101;
if(90<=x<=100)
  cout<<'A';  

此代码仍在控制台上打印“A”。你能帮我理解这个布尔表达式的计算方式和顺序吗?

4

3 回答 3

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)
于 2018-11-05T16:19:51.507 回答
2

这是错误的常见来源,因为它看起来正确,并且在语法上是正确的。

int x=101;
if(90<=x<=100)

这相当于

if (  (90 <= x) <= 100) 

这是

if ( true <= 100 )

并且true可以转换1

if ( true ) 
于 2018-11-05T16:21:43.533 回答
0

这个表达式大致等于

int x=101;
bool b1 = 90 <= x; // true
bool b2 = int(b1) <= 100; // 1 <= 100 // true
if(b2)
    cout<<'A';

所以这是真实的结果。

于 2018-11-05T16:21:20.980 回答