单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:167|回复:5
打印上一主题下一主题

为什么这函数判断失败

[复制链接]
跳转到指定楼层
楼主
ID:192020发表于 2024-5-13 15:10|只看该作者回帖奖励
u32 TEST_FUN(void)
{
   u16 low,high;
   u32 re;
   low=0xAAAA;
   high=0x5555;
   re=(u32)(high<<16|low);//////////                   [2:].zfill(8)
   return re;
}
if(TEST_FUN()==0x5555AAAA)
{
//判断失败,为啥这re不是0x5555AAAA?
}
沙发
ID:1080935发表于 2024-5-13 15:37|只看该作者
强制类型转换位置错了  re=((u32)high<<16|low);//////////
板凳
ID:1080935发表于 2024-5-13 15:38|只看该作者
你对结果强制类型转换,运算钱high还是u16类型,应该把high强制类型转换。类型全换为u32就好了。
地板
ID:192020发表于 2024-5-13 15:51|只看该作者
LaoYuTou 发表于 2024-5-13 15:38
你对结果强制类型转换,运算钱high还是u16类型,应该把high强制类型转换。类型全换为u32就好了。

感谢,我再试试
5#
ID:192020发表于 2024-5-13 16:01|只看该作者

确实是这样,学艺不精了。之前AD转换平均运算也没发现这问题,到这里才发现问题
6#
ID:879809发表于 2024-5-16 22:50|只看该作者
完全没必要移位,太浪费时间了。
u32 i;
u16 *p=&i;
*p=0x5555;
++p;
*p=0xaaaa;

看上去跟你的代码差不多,但实际上没几个机器码,比你的执行起来快多了。

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网