首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]连续或运算不对么?

[求助]连续或运算不对么?

AddressByte=(((dword)CAN4RXDSR_ADR[0]<<16)|


              (dword)(CAN4RXDSR_ADR[1]<<8)|


              (dword)CAN4RXDSR_ADR[2]);     //改为两次运算,直接这样用BDM得错误地址


但分开再做是好的,哪位老兄知道为什么?
AddressByte=((dword)CAN4RXDSR_ADR[0]<<8)|((dword)CAN4RXDSR_ADR[1]);
AddressByte=(AddressByte<<8)|((dword)CAN4RXDSR_ADR[2]);

Walk slowly,but never stop.
可能与运算顺序有关。你可以看一下这两种方式对应的汇编代码有什么不同。
海纳百川  有容乃大
返回列表