如果缺少逻辑运算符,则评估顺序

时间:2013-11-21 11:13:25

标签: c

以下是C程序。

我把它排除在其他地方,但如果它进入。

#include<stdio.h>
void main()
{
    int iAge = 10;
    int iMinAge = 1;
    int iMaxAge = 18;

    if(iMinAge >= iAge <= iMaxAge)
    {
        printf("\n in if...");
    }
    else
    {
        printf("\n in else...");
    }
}

评估的顺序是什么?

3 个答案:

答案 0 :(得分:3)

iMinAge >= iAge <= iMaxAge 

相当于

(iMinAge >= iAge) <= iMaxAge

因此

0 <= iMaxAge

因此,它被评估为真。

答案 1 :(得分:2)

if(iMinAge >= iAge <= iMaxAge)这在C中不起作用(不是你想要的方式)。
如果您想测试iAge是否在[iMinAgeimaxAge]

的范围内

这样做:if ( iAge >= iMinAge && iAge <= iMaxAge)

答案 2 :(得分:0)

首先,关系运算符的关联性是从左到右。 现在,在if循环中

if(iMinAge >= iAge <= iMaxAge)

按照关联性从左到右开始执行,因此首先评估iMinAge&gt; = iAge,返回0,现在

0<=iMaxAge

这是真的(1),所以内部的语句如果被执行。