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

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 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
40条回答
ibichao
1楼-- · 2020-01-19 21:47
Squall001 发表于 2016-1-8 19:41
不可能我要定义个int变量   long变量  float这些都要加这个关键字吧  这个不科学啊。。。。 ...

关掉优化等级就可以了
xwkm
2楼-- · 2020-01-19 22:01
C51乱优化出名,试试1000后加UL。个人建议直接换编译器,用SDCC比这个靠谱多了,虽然也是相对不太靠谱
jjl3
3楼-- · 2020-01-20 03:18
 精彩回答 2  元偷偷看……
Squall001
4楼-- · 2020-01-20 04:37
jjl3 发表于 2016-1-8 21:28
可能是大小编的问题

?? 大小编是什么意思?
hricchaya
5楼-- · 2020-01-20 09:41
应该是优化问题,我猜编译器用移位操作结果直接赋值了(省时间),同时整个程序里这个变量的有用精度只有一个字节,结果就只压栈了一个字节(省空间),这个看下汇编代码应该就清楚编译器到底做了什么。对于这样什么实际操作都没有的局部变量,有些编译器优化可能连申请都不会申请直接无视的。
jjl3
6楼-- · 2020-01-20 11:31
Squall001 发表于 2016-1-8 21:41
?? 大小编是什么意思?

javascript:;

一周热门 更多>