OpenEdv-开源电子网

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

你们有碰到过这种情况吗?

[复制链接]

12

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-10-19
在线时间
52 小时
发表于 2016-11-22 15:38:39 | 显示全部楼层 |阅读模式
5金钱
while(1)
{.........
                 if((tp_dev.x[0]<60)&&(24<tp_dev.y[0]<48))     //只有这个可以有效判断
                                 {  
                                         LCD_ShowString(120,48,200,24,24,"+");
                                         LCD_ShowString(144,48,200,24,24,"-");
                                         LCD_ShowString(120,72,200,24,24,"+");
                                         LCD_ShowString(144,72,200,24,24,"-");
                                         LCD_ShowString(0,48,200,24,24,"TempH:  C");
                                         LCD_ShowNum(72,48,TempH,2,24);
                                         LCD_ShowString(0,72,200,24,24,"TempL:  C");
                                            LCD_ShowNum(72,72,TempL,2,24);

                                 }
                       

                         if((212<tp_dev.x[0]<272)&&(24<tp_dev.y[0]<48))  //从这里开始后面都默认为真了!!!
               {
                             LCD_ShowString(120,48,200,24,24,"-");
                                  

                           }       
                    if((284<tp_dev.x[0]<320)&&(24<tp_dev.y[0]<48))   
              {
                           LCD_ShowString(120,72,200,24,24,"-");

                          }       
                    if((136<tp_dev.x[0]<184)&&(444<tp_dev.y[0]<480))
                        {LCD_ShowString(120,96,200,24,24,"0");
       
                        }

}
死循环的时候到//的时候默认为真了!直接执行里面的语句!

最佳答案

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

小于号的表达式,要分开写,不能写成A
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
发表于 2016-11-22 15:38:40 | 显示全部楼层
小于号的表达式,要分开写,不能写成A<B<C,除非你知道他们的优先级是从右到左,即A<(B<C),或者从左到右,不管是哪种结果,都不是你想要的表达式A<B && B<C。

另外,即使你知道是哪种优先级,这里除非你自己写着玩,要不然,没有哪个公司会允许你这么写的。所有表达式要易读,清晰。
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
发表于 2016-11-22 15:58:41 | 显示全部楼层
你可以换一种逻辑表达,很多时候的问题就是编译器的逻辑问题。
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
发表于 2016-11-23 15:39:51 | 显示全部楼层
mack13013 发表于 2016-11-22 15:38
小于号的表达式,要分开写,不能写成A

另外注意一点A<(B<C)这个式子中,B<C的结果是布尔型,C语言进行隐式转换或者编译器给出警告之后,再跟A比较。

而且,各个编译器对于布尔型的定义不一样,一般来说,false大多都被定义为0,极个别的会定义为-1,true大多会被定义为1或者非0。

这个例子中很可能就是A<0或者A<1,估计不是你想要的结果。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 00:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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