380091044 发表于 2024-3-4 08:46:13

OSRdyTbl[y] &= (OS_PRIO)~OSTCBCur->OSTCBBitX;这句怎么理解?

OSRdyTbl &= ~OSTCBCur->OSTCBBitX;//清除准备优先级中的X标记量;

那么,OSRdyTbl &= (OS_PRIO)~OSTCBCur->OSTCBBitX;这句怎么理解?

乘风飞扬 发表于 2024-3-4 09:08:52

OSTCBCur->OSTCBBitX 数据取反后按照 OS_PRIO 类型进行数据格式化。
然后跟 OSRdyTbl 进行与运算,运算结果保存在 OSRdyTbl 里面。

tzz1983 发表于 2024-3-4 09:38:43

本帖最后由 tzz1983 于 2024-3-4 10:06 编辑

学好C,这个就很好理解

看你说的两句:
OSRdyTbl &= ~OSTCBCur->OSTCBBitX;
OSRdyTbl &= (OS_PRIO)~OSTCBCur->OSTCBBitX;

后面的一句加了强制转换运算 (OS_PRIO) ,别的都一样。去看OSTCBBitX的定义会发现,OSTCBBitX本来就是 (OS_PRIO) 类型, 所以这两句实际上是一样的意思。




380091044 发表于 2024-3-4 10:23:53

本帖最后由 380091044 于 2024-3-4 10:30 编辑

tzz1983 发表于 2024-3-4 09:38
学好C,这个就很好理解

看你说的两句:

感谢老师指点,C学的确实不好,通过go to difine查找其定义,跳转到一个地方,没有找到OS_PRIO的定义,
页: [1]
查看完整版本: OSRdyTbl[y] &= (OS_PRIO)~OSTCBCur->OSTCBBitX;这句怎么理解?