大家看看这个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语句。不知道这样解对不对
各位给个高见,我现在有点疑惑 理解正确, 反过来判断不就对了:
if(len != 1)
{
ES=1;
}
else
if(receive>0x07)flag = 1;
没明白你的意思哦~ 楼主似乎是对的,else匹配的if是倒数第二个,if和else只执行一个。我理解的应该没错,看二楼的就更清楚了 else匹配的是离他最近的那个IF,他们组成的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;
} //???????????????????????? 我觉得对于这种不容易判断的情况最好用括号括起来 多了一个括号啊,楼主再检查一下吧。这样的代码编译不过的。
panda1130 发表于 2012-5-4 10:17 static/image/common/back.gif
多了一个括号啊,楼主再检查一下吧。这样的代码编译不过的。
我这里讨论的不是整段程序对不对,而是讨论那个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;
} if(RI)
{ ES=0;
RI = 0;
if(len < 2)
{
receive = SBUF;
len++;
}
}
if(len == 1)
{
if(receive>0x07)
flag = 1;
}
else
ES=1;
} if(RI)
{
ES=0;
RI = 0;
if(len < 2)
{
receive = SBUF;
len++;
}
}
if((len != 1) || (receive<=0x07))
{
ES=1;
}
else
{
flag = 1;
}
liuyonguo 发表于 2012-5-4 10:59 static/image/common/back.gif
if(RI)
{
ES=0;
谢谢你,这个比较好
页:
[1]