lhcyy 发表于 2012-5-3 15:16:11

大家看看这个if。。。else....语句该这么解

if(RI)
        {        ES=0;
                RI = 0;
                if(len < 2)
                {
                        receive = SBUF;
                        len++;
                }
        }
        if(len == 1)
        {
          if(receive>0x07)
                  flag = 1;
        }
        else
          ES=1;
    }
我的原意是如果len不等于1那么就让 ES=1;但是感觉这样执行的话如果len=1了,进入了第一个if语句。里面的 if 语句不成立的话,岂不是后面也不会执行else语句。不知道这样解对不对
各位给个高见,我现在有点疑惑

HeP028 发表于 2012-5-3 18:40:28

理解正确,

lryxr2507 发表于 2012-5-3 18:49:02

反过来判断不就对了:
if(len != 1)
{
ES=1;
}
else
if(receive>0x07)flag = 1;

linpin1368 发表于 2012-5-3 18:49:55

没明白你的意思哦~

xiaoyigechaos 发表于 2012-5-3 21:00:57

楼主似乎是对的,else匹配的if是倒数第二个,if和else只执行一个。我理解的应该没错,看二楼的就更清楚了

zjk 发表于 2012-5-4 09:00:42

else匹配的是离他最近的那个IF,他们组成的If else语句跟上面的没关系

chinabn 发表于 2012-5-4 09:24:21

if(RI)
{
    ES=0;
    RI = 0;
    if(len < 2)
    {
      receive = SBUF;
      len++;
    }
}
if(len == 1)
{
    if(receive>0x07)
      flag = 1;
}
else
    ES=1;
} //????????????????????????

lxjiiing 发表于 2012-5-4 09:43:50

我觉得对于这种不容易判断的情况最好用括号括起来

panda1130 发表于 2012-5-4 10:17:26

多了一个括号啊,楼主再检查一下吧。这样的代码编译不过的。

lhcyy 发表于 2012-5-4 10:24:34

panda1130 发表于 2012-5-4 10:17 static/image/common/back.gif
多了一个括号啊,楼主再检查一下吧。这样的代码编译不过的。

我这里讨论的不是整段程序对不对,而是讨论那个if....else语句改怎么解释,

adcr 发表于 2012-5-4 10:34:19

改成下面这样的格式就能理解了

if(RI)
{
        ES=0;
        RI = 0;
        if(len < 2)
                {
                        receive = SBUF;
              len++;
                }
}
if(len == 1)
{
        if(receive>0x07)
        flag = 1;
}
else
{
        ES=1;
}

leaderpig 发表于 2012-5-4 10:56:45

if(RI)
      {      ES=0;
                RI = 0;
                if(len < 2)
                {
                        receive = SBUF;
                        len++;
                }
      }
      if(len == 1)
      {
            if(receive>0x07)
                  flag = 1;
      }
      else
          ES=1;
    }

liuyonguo 发表于 2012-5-4 10:59:39

if(RI)
{
      ES=0;
      RI = 0;
      if(len < 2)
      {
                receive = SBUF;
               len++;
      }
}
if((len != 1) || (receive<=0x07))
{
       ES=1;
}
else
{
      flag = 1;
}

lhcyy 发表于 2012-5-4 11:36:22

liuyonguo 发表于 2012-5-4 10:59 static/image/common/back.gif
if(RI)
{
      ES=0;


谢谢你,这个比较好
页: [1]
查看完整版本: 大家看看这个if。。。else....语句该这么解