OpenEdv-开源电子网

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

为什么if也可以这么奇葩,求解

[复制链接]

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
发表于 2016-8-13 23:19:36 | 显示全部楼层 |阅读模式
5金钱
一下是我在ucos下用的if语句,在非ucos环境下是没问题的,到ucos环境下面的时候出现了这样的错误
1: 用if((key_press==1)&&(KEY2==0))时,程序没有问题
2:用if(((key_press==1)&&(KEY2==0))||(hand!=0))就出现问题了,即使条件不满足,照样进入if循环,为什么呀,不解,求救
各位大侠有没有遇到过这种经历,求解

最佳答案

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

必须是自己判断失误啊...特别的,另 temp=(key_press==1)&&(KEY2==0))||(hand!=0),然后看temp的值,就清白了...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-8-13 23:19:37 | 显示全部楼层
必须是自己判断失误啊...特别的,另   temp=(key_press==1)&&(KEY2==0))||(hand!=0),然后看temp的值,就清白了...
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-8-14 01:54:03 | 显示全部楼层
或的关系只要有一个满足就会进入
回复

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-3-3
在线时间
16 小时
发表于 2016-8-14 07:31:41 | 显示全部楼层
检查一下是不是hand!=0这个条件满足了
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-14 09:29:48 | 显示全部楼层
he282905293 发表于 2016-8-14 07:31
检查一下是不是hand!=0这个条件满足了

肯定是不满足的,而且我置0后再判断一遍也是这样,不过只要进入过一次下次就正常了
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-14 09:32:19 | 显示全部楼层
八度空间 发表于 2016-8-14 01:54
或的关系只要有一个满足就会进入

两个都是不满足的,但是还是进去了,只是进去一次后下次就正常了,没有使用ucos的时候是没问题的,我怀疑和抢占式运行方式有关
回复

使用道具 举报

3

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-1-13
在线时间
70 小时
发表于 2016-8-14 09:45:54 来自手机 | 显示全部楼层
&&有一个条件为假,后面的就不判断了。
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-8-14 14:03:05 | 显示全部楼层
DZKJXHxcz 发表于 2016-8-14 09:29
肯定是不满足的,而且我置0后再判断一遍也是这样,不过只要进入过一次下次就正常了

没理由啊
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2016-8-14 14:19:43 来自手机 | 显示全部楼层
mdk中,这种情况注意要用volitate类型
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
34
金钱
34
注册时间
2016-8-10
在线时间
2 小时
发表于 2016-8-15 17:57:27 | 显示全部楼层
顶帖顶帖
回复

使用道具 举报

42

主题

145

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2016-7-17
在线时间
59 小时
发表于 2016-8-20 19:43:17 | 显示全部楼层
hand==!0吧
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-28 18:32:54 | 显示全部楼层
本帖最后由 DZKJXHxcz 于 2016-8-28 18:39 编辑

问题为最后是解决了,应该是MDK优化的问题,也有可能和JLINK仿真有关系,进去是进去了,不过结果和没进去一样。就是进入if里面后,如果if为假,似乎是没有执行里面的代码,if为真才会执行。
不过这种情况仅仅会在复位后第一次会出现。
谢谢大家的解答。
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2016-8-28 18:33:07 | 显示全部楼层

这个应该是一样的吧
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 09:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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