打印

执行3后,是继续执行到4,5吗?

[复制链接]
1494|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hxdjb|  楼主 | 2008-11-24 13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    {
1      if(mark1==1)  //第一标志查询
          {
2        mark1=0; 
3        LED1 =0;     //第一标志有效
            }
4        else          //第一标志无效
           {
5            if (mark2==1)//第二标志查询
                {
6                 mark2=0;
7                 LED2 =0;
                  }
8                else    退出查询
                  {
9                  .....退出查询处理程序...
                  }
             }
        }
如果执行3以后,怎样才能直接跳到9,退出查询。我的想法是:如果第一标志是有效的,就跳过第二标志查询直接退出。只有在第一标志无效的情况下,才
进行第二标志查询。

相关帖子

沙发
s46410864| | 2008-11-24 15:55 | 只看该作者

用CASE语句

LZ说的问题是并行的判断,不是串行判断,可以用CASE说话.

使用特权

评论回复
板凳
hxdjb|  楼主 | 2008-11-24 17:57 | 只看该作者

先谢了,这个是中断标志判断,总共用两个标志位,用的是

如果用case的话,那switch(k)里的K必须是一个寄存器的值,我不知道如何处理,因为我的中断发生标志是单片机寄存器的两个不同的位,就是8位里面的0位和2位,其他的位是空的。
例如:
 7空 6空 5空 4空 3空 2标志位 1空  0标志位。
在有中断时要知道是哪个中断发生了。

使用特权

评论回复
地板
dengm| | 2008-11-24 18:02 | 只看该作者

c 是有 goto 的!!!!

使用特权

评论回复
5
mohanwei| | 2008-11-24 18:32 | 只看该作者

goto

使用特权

评论回复
6
icmap| | 2008-11-24 19:38 | 只看该作者

建议不用goto,用函数调用。

使用特权

评论回复
7
mohanwei| | 2008-11-24 19:52 | 只看该作者

多重判断+出错处理(中途退出),goto几乎是唯一的正道

使用特权

评论回复
8
耕在此行| | 2008-11-25 20:01 | 只看该作者

楼上的不会吧

我写C还没用过GO TO呢,
刚开始写C的时候,也很想用GO TO 跳,但人家说C里面是不推荐用GO TO的,所以俺就一直没用.
现在也习惯了不用GO TO 

使用特权

评论回复
9
原野之狼| | 2008-11-25 20:28 | 只看该作者

谁说不能用GOTO

具体问题具体分析,LINUX里GOTO也很多.

使用特权

评论回复
10
hsp8031| | 2008-11-25 21:32 | 只看该作者

用什么goto

           {
1              if(mark1==1)  //第一标志查询
               {
2                 mark1=0; 
3                 LED1 =0;     //第一标志有效
               }
4                     else          //第一标志无效
                {
5                   if (mark2==1)//第二标志查询
                     {
6                      mark2=0;
7                      LED2 =0;
                      }
                    }
8         //  
9         .....退出查询处理程序...
               }
 

使用特权

评论回复
11
ljm810010| | 2008-11-25 21:42 | 只看该作者

if可以灵活运用适应各种情况

但if.. else if..else..太多而且嵌套时,反而觉得用goto思路更清晰,不知大家有没有同感?

使用特权

评论回复
12
zq1987731| | 2008-11-25 21:56 | 只看该作者

也可以这样,看起来清楚一些

k = 7空 6空 5空 4空 3空 2标志位 1空 0标志位
switch(k)
{
    case 0x01:    // 00000001
        // 0标志位触发事件
        break;
    case 0x04:    // 00000100
        // 2标志位触发事件
        break;
    case 0x05:    // 00000101
        // 0标志位和2标志位同时触发,按需要来决定处理顺序
        break;
    default:
        // 非法参数处理
}

使用特权

评论回复
13
mohanwei| | 2008-11-25 22:38 | 只看该作者

如果再加几个for……我实在找不到比goto更清晰的写法


有高招的朋友不妨贴一个片断出来给大家欣赏一下……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

236

帖子

2

粉丝