OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2815|回复: 4

按键扫描函数的问题

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2018-7-28
在线时间
10 小时
发表于 2018-9-17 20:11:49 | 显示全部楼层 |阅读模式
1金钱
u8 KEY_Scan(u8 mode)
{  
static u8 key_up=1;
if(mode)key_up=1;   
if(key_up&&(KEY0==0||KEY1==0||KEY2==0||WK_UP==1))
{
  delay_ms(10);
  key_up=0;
  if(KEY0==0)return KEY0_PRES;
  else if(KEY1==0)return KEY1_PRES;
  else if(KEY2==0)return KEY2_PRES;
  else if(WK_UP==1)return WKUP_PRES;
}else if(KEY0==1&&KEY1==1&&KEY2==1&&WK_UP==0)key_up=1;      
  return 0;
}

为什么最后要返回0,前面 if 语句不是已经有返回值了么?再加一个返回值那前面的返回值不是没有意义了么?而且如果要是最后的那个else if 的返回值应该加一个中括号吧


最佳答案

查看完整内容[请看2#楼]

这个不是按键扫描的问题, 是C语言的问题。 int func() { if(cond1)return 1; else if(cond2) return 2; return 0; } 如果前面有条件满足,return的话,当然后面的就不执行了。 但万一前面的条件不满足(既不满足条件1也不满足条件2) 最后一句不就有用了吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4519
金钱
4519
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-9-17 20:11:50 | 显示全部楼层
这个不是按键扫描的问题,
是C语言的问题。
int func()
{
if(cond1)return 1;
else if(cond2) return 2;
return 0;
}

如果前面有条件满足,return的话,当然后面的就不执行了。
但万一前面的条件不满足(既不满足条件1也不满足条件2)
最后一句不就有用了吗?
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2018-9-17 20:16:05 | 显示全部楼层
前面都不满足的话,函数最终也得返回一个整数,所以最后得有一个
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2018-7-28
在线时间
10 小时
 楼主| 发表于 2018-9-17 20:19:06 | 显示全部楼层
a5820736 发表于 2018-9-17 20:16
前面都不满足的话,函数最终也得返回一个整数,所以最后得有一个

那要是前面满足了有返回值了,这个返回值还有用么
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-7-14
在线时间
9 小时
发表于 2019-8-20 22:07:56 | 显示全部楼层
long1246 发表于 2018-9-17 20:19
那要是前面满足了有返回值了,这个返回值还有用么

没用了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 05:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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