搜索
bottom↓
回复: 13

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

[复制链接]

出0入0汤圆

发表于 2012-5-3 15:16:11 | 显示全部楼层 |阅读模式
if(RI)
        {        ES=0;
                RI = 0;
                if(len < 2)
                {
                        receive[len] = SBUF;
                        len++;
                }
        }
        if(len == 1)
        {
            if(receive[0]>0x07)
                    flag = 1;
        }
        else
          ES=1;
    }  
我的原意是如果len不等于1那么就让 ES=1;但是感觉这样执行的话如果len=1了,进入了第一个if语句。里面的 if 语句不成立的话,岂不是后面也不会执行else语句。不知道这样解对不对
各位给个高见,我现在有点疑惑

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-3 18:40:28 来自手机 | 显示全部楼层
理解正确,

出0入0汤圆

发表于 2012-5-3 18:49:02 | 显示全部楼层
反过来判断不就对了:

  1. if(len != 1)
  2. {
  3.   ES=1;
  4.   }
  5. else
  6. if(receive[0]>0x07)  flag = 1;
复制代码

出0入0汤圆

发表于 2012-5-3 18:49:55 | 显示全部楼层
没明白你的意思哦~

出0入4汤圆

发表于 2012-5-3 21:00:57 | 显示全部楼层
楼主似乎是对的,else匹配的if是倒数第二个,if和else只执行一个。我理解的应该没错,看二楼的就更清楚了

出0入0汤圆

发表于 2012-5-4 09:00:42 | 显示全部楼层
else匹配的是离他最近的那个IF,他们组成的If else语句跟上面的没关系

出0入0汤圆

发表于 2012-5-4 09:24:21 | 显示全部楼层
if(RI)
{
    ES=0;
    RI = 0;
    if(len < 2)
    {
        receive[len] = SBUF;
        len++;
    }
}
if(len == 1)
{
    if(receive[0]>0x07)
        flag = 1;
}
else
    ES=1;
} //????????????????????????

出0入0汤圆

发表于 2012-5-4 09:43:50 | 显示全部楼层
我觉得对于这种不容易判断的情况最好用括号括起来

出0入0汤圆

发表于 2012-5-4 10:17:26 | 显示全部楼层
多了一个括号啊,楼主再检查一下吧。这样的代码编译不过的。

出0入0汤圆

 楼主| 发表于 2012-5-4 10:24:34 | 显示全部楼层
panda1130 发表于 2012-5-4 10:17
多了一个括号啊,楼主再检查一下吧。这样的代码编译不过的。

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

出0入0汤圆

发表于 2012-5-4 10:34:19 | 显示全部楼层
改成下面这样的格式就能理解了

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

出0入0汤圆

发表于 2012-5-4 10:56:45 | 显示全部楼层
  1. if(RI)
  2.         {        ES=0;
  3.                 RI = 0;
  4.                 if(len < 2)
  5.                 {
  6.                         receive[len] = SBUF;
  7.                         len++;
  8.                 }
  9.         }
  10.         if(len == 1)
  11.         {
  12.             if(receive[0]>0x07)
  13.                     flag = 1;
  14.         }
  15.         else
  16.           ES=1;
  17.     }  
复制代码

出0入0汤圆

发表于 2012-5-4 10:59:39 | 显示全部楼层
if(RI)
{
        ES=0;
        RI = 0;
        if(len < 2)
        {
                receive[len] = SBUF;
                 len++;
        }
}
if((len != 1) || (receive[0]<=0x07))
{
       ES=1;
}
else
{
      flag = 1;
}

出0入0汤圆

 楼主| 发表于 2012-5-4 11:36:22 | 显示全部楼层
liuyonguo 发表于 2012-5-4 10:59
if(RI)
{
        ES=0;

谢谢你,这个比较好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-6 19:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表