赋值一个数,结果不等于那个数,毁我三观

2020-01-18 18:47发布

最简单的代码 居然会这样,求解为什么?
编译环境 C51v952

QQ截图20160108190305.png (65.34 KB, 下载次数: 0) 下载附件 2016-1-8 19:03 上传

EEPROM单字节操作例程.rar (23.61 KB, 下载次数: 11) 2016-1-8 19:03 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
41条回答
liyang121316
2020-01-22 12:32
gmajvfhpa 发表于 2016-1-8 23:25
编译器很聪明,它知道aa1赋值后会左移8位,所以赋值时,只赋低8位,高8位它根本不管它。软件仿真时,高8位 ...

      也可以说是过度优化的结果,将优化级别调到最低就一切都正常了,调高优化级别编译器为了完成优化任务就得耍点小聪明当然这也是你逼的。
总之有优化的话不要相信单步仿真的结果,但就这个程序来看最终的执行结果应该是对的。

一周热门 更多>