独闷闷网

 找回密码
 立即注册
搜索
查看: 2434|回复: 0
收起左侧

[原创] C语言中if ,else if,else if的三选一组合语句的执行顺序是怎么样的?已解答。

[复制链接]
发表于 2014-10-29 14:20:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
曹健-江苏:
鸿哥,第33例.
  1. //在本程序中,每次长按复位按键必然触发一次短按复位按键
  2.     if(key_sr1==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
  3.     {
  4.         ui_key_lock1=0; //按键自锁标志清零
  5.         ui_key_delay1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。      
  6.     }
  7.     else if(ui_key_lock1==0)//有按键按下,且是第一次被按下
  8.     {
  9.         ui_key_delay1++; //累加定时中断次数
  10.         if(ui_key_delay1>20)
  11.             {
  12.             ui_key_delay1=0;
  13.             ui_key_lock1=1;  //自锁按键置位,避免一直触发
  14.             uc_key_num=2;    //触发2号键,短复位按键
  15.             }
  16.     }
  17.     else if(ui_key_delay1<200)   //长按复位按键
  18.     {
  19.         ui_key_delay1++;
  20.         if(ui_key_delay1==200)
  21.             {
  22.             uc_key_num=17;    //触发17号长按复位键
  23.             }
  24.     }
复制代码

if(条件1)
else if(条件2)
else if(条件3)

执行顺序是什么?
为什么上面的程序长按复位按键,短复位按键也会动作?

鸿哥--深圳:
if(条件1)
else if(条件2)
else if(条件3)
三选一。
先是判断条件1,如果条件1不满足才判断条件2,否则就跳过了。
如果条件2不满足,才判断条件3,否则就跳过了。
如果条件1和条件2都不满足,最后才判断条件3.

曹健-江苏:
这句话我没有理解,为什么*每次长按复位按键必然触发一次短按复位按键?如果按照刚才if ,else if ,else if的执行顺序,应该是长按复位按键则只有长复位按键动作。

鸿哥--深圳:
if(条件1)
else if(条件2)
else if(条件3)
不会,因为条件2是短按的,条件3是长按。
你要进入条件3长按,必然是触发了条件2的短按。
ui_key_lock1=1;  //自锁按键置位,避免一直触发
这句话被执行到后才会进入条件3。

曹健-江苏:
你的意思是  先是条件2执行  然后  再条件3执行?

鸿哥--深圳:
只要条件2一直满足  else if(ui_key_lock1==0),那么就永远都不会进入条件3。
只有进入条件2里面把 ui_key_lock1=1;后,才会进入条件3。

曹健-江苏:
我理解了。两个else if 之间是通过 ui_key_lock1这个条件来锁存的。

鸿哥--深圳:
对。三选一。


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-3-29 09:06 , Processed in 0.156577 second(s), 18 queries .

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