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

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条回答
mcu5i51
1楼-- · 2020-01-21 03:14
 精彩回答 2  元偷偷看……
摄氏零度
2楼-- · 2020-01-21 07:40
Squall001 发表于 2016-1-8 19:39
我是定义的int


亲,你定义的是uint,在8位机上最大值应该是2的8次方减1
xivisi
3楼-- · 2020-01-21 11:57
浮点数 是可以出现  给一个变量赋值一个常量结果不等于这个常量的。其他的请按规则来
Squall001
4楼-- · 2020-01-21 12:34
hricchaya 发表于 2016-1-8 21:57
应该是优化问题,我猜编译器用移位操作结果直接赋值了(省时间),同时整个程序里这个变量的有用精度只有一 ...

今天才终于理解你的意思 ,也就是楼下那位仁兄说的,编译器知道我要左移8位,所以直接只赋值1个字节。结果还是一样的,编译器没有错。。
Squall001
5楼-- · 2020-01-21 13:46
摄氏零度 发表于 2016-1-9 11:32
亲,你定义的是uint,在8位机上最大值应该是2的8次方减1

uint就是unsigned int 同样是2个字节,原因是编译器的优化 但是编译器没有错。
Squall001
6楼-- · 2020-01-21 18:02
 精彩回答 2  元偷偷看……

一周热门 更多>