找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1631|回复: 7
打印 上一主题 下一主题
收起左侧

Keil调试功能有BUG?

[复制链接]
跳转到指定楼层
楼主
本帖最后由 星水天河 于 2020-6-15 19:29 编辑

例如执行i=0xA2FC%10;得到的是0x04。这个结果是正确的。(0xA2FC=41724)
但是语句remainder=quotient%10;(quotient变量当前的值为0xA2FC,为int型变量;remainder为unsigned char型变量)
执行后,在Watch窗口看到的remainder的值为0xFE? (这个问号是Watch窗口中remainder变量的值这一栏中就有的)
即便我进行强制类型转换remainder=(unsigned char)quotient%10;得到的结果为0x02,也和0x04的正确结果完全不符合。这是怎么回事?

图片3.jpg (2.34 KB, 下载次数: 67)

图片3.jpg

图片1.jpg (10.18 KB, 下载次数: 76)

图片1.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:592807 发表于 2020-6-16 08:47 | 只看该作者
remainder=(unsigned char)(quotient%10)
回复

使用道具 举报

板凳
ID:694871 发表于 2020-6-16 12:27 | 只看该作者
黄youhui 发表于 2020-6-16 08:47
remainder=(unsigned char)(quotient%10)

改成这样之后在Watch窗口看到的remainder的值还是0xFE'?  请问这是怎么回事。。
回复

使用道具 举报

地板
ID:267719 发表于 2020-6-16 13:41 | 只看该作者
i是unsigned int =0xA2FC=41724    i%10的结果也是和i类型一样  所以是4
quotient是int =0xA2FC=-23812 所以%10后得到的是-2  FFFE(quotient%10的结果也是和quotient的类型一样是int型),然后赋值给unsigned char型的remainder,那remainder=0xFE
remainder=(unsigned char)quotient%10的话,quotient=0xA2FC;(unsigned char)quotient=0xFC;
0xFC%10=252%10=2.
所以正确做法应该这样:
remainder=(unsigned int)quotient%10;
先把quotient强制转换成unsigned int型,这时quotient%10的结果也是unsigned int型。得到0x0004,再赋值给remainder就是0x04
回复

使用道具 举报

5#
ID:592807 发表于 2020-6-16 13:46 | 只看该作者
星水天河 发表于 2020-6-16 12:27
改成这样之后在Watch窗口看到的remainder的值还是0xFE'?  请问这是怎么回事。。

单步执行看看吧,我这没问题

2.png (74.04 KB, 下载次数: 49)

2.png
回复

使用道具 举报

6#
ID:123289 发表于 2020-6-16 15:19 | 只看该作者
INT 的最大值是多少?
有负的INT吗?
回复

使用道具 举报

7#
ID:782419 发表于 2020-6-17 21:43 | 只看该作者
remainder=(unsigned char)quotient%10
quotient=0xA2FC=41724
(unsigned char)quotient=0xFC,这没有什么问题吧
0xFC=252,这也没有问题吧
那么252对10取余等于2有什么问题么?
回复

使用道具 举报

8#
ID:694871 发表于 2020-6-21 07:13 | 只看该作者
carpcarey 发表于 2020-6-16 13:41
i是unsigned int =0xA2FC=41724    i%10的结果也是和i类型一样  所以是4
quotient是int =0xA2FC=-23812 所 ...

你的回答是对的。感谢!还有一个问题是上面的截图里remainder=0XFE‘?这个'?是什么意思?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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