if(rxlen==RS485_RX_CNT&&rxlen) 这句怎么理解

2019-07-21 08:03发布

if(rxlen==RS485_RX_CNT&&rxlen)
请问一下这句怎么理解,C学的不好。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
jwr0712
1楼-- · 2019-07-21 08:20
==的优先级比&&的高,所以这句话if(rxlen==RS485_RX_CNT&&rxlen)的意思是先判断rxlen是否等于RS485_RX_CNT,即10ms内没有收到数据(接收完成),再和rxlen相与,判断非零,即为接收到数据。
正点原子
2楼-- · 2019-07-21 11:25
实际验证即可。不过建议里面再加多个括号,方便阅读代码。
xc1989
3楼-- · 2019-07-21 13:20
回复【2楼】正点原子:
---------------------------------
这句为什么可以判断 接收已经完成呢RXlen是RS485_RX_CNT是程序刚开始时候付给他的值    如果程序刚开始的时候没接收到数据,那么RXLEN=0,在之后的10毫秒内接受到数据了  那么RS485_RX_CNT 就不为0了  那么这个语句就是 逻辑假了  下面的赋值就不会进行了 那么接下来的接收就不会进行了 if(rxlen==RS485_RX_CNT&&rxlen)//
{
  for(i=0;i<rxlen;i++)
{
buf=RS485_RX_BUF;
}
*len=RS485_RX_CNT;
RS485_RX_CNT=0;
}
} 这么理解对吗?  对这个判断语句很不理解啊>
xc1989
4楼-- · 2019-07-21 19:17
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 23:45
回复【4楼】xc1989:
---------------------------------
你测试过没有?
happylwj2002
6楼-- · 2019-07-22 01:06
同问,为何用这么条语句判断接收完成了没有?谁能解释一下

一周热门 更多>