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

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条回答
renjun_EMbest
2020-01-22 13:09
编译器里面有一种优化技术叫做

公共子表达式消除
该编译器可识别代码中的公共子表达式,并将结果用于每个实例,不再重复求值。例如,您的代码可能在多个地方使用表达式 a+1。该编译器识别此表达式并仅对其求值一次,然后将结果用于所有后续实例

有时间的话,看一下MDK优化后的反汇编代码

Tips: 在有优化的情况下,不要相信watch窗口的显示值;

一周热门 更多>