通业开发人论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 139|回复: 0

未加括号导致结果计算错误

[复制链接]
发表于 2015-5-27 22:43:48 | 显示全部楼层 |阅读模式
                data = (UInt32)(pData[i] << 24 + pData[i + 1] << 16 +
                     pData[i + 2] << 8 + pData[i + 3]);
调试时令pData[i] = 0; pData[i + 1] = 1; pData[i + 2] = 0; pData[i + 3] = 0;
其计算结果data = 0;
经过分析为<< 比 + 的优先级低.

故而 要改成
                data = (UInt32)((pData[i] << 24) + (pData[i + 1] << 16) +
                     (pData[i + 2] << 8) + pData[i + 3]);

由以上bug得出如下结论
任何时候都不能省略括号.
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|TongYe R&D Inc.

GMT+8, 2024-5-14 07:15 , Processed in 0.118007 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2000-2022, Tongye. 粤ICP备17061194号

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