找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Keil调试功能有BUG?

查看数: 2259 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-15 19:28

正文摘要:

本帖最后由 星水天河 于 2020-6-15 19:29 编辑 例如执行i=0xA2FC%10;得到的是0x04。这个结果是正确的。(0xA2FC=41724) 但是语句remainder=quotient%10;(quotient变量当前的值为0xA2FC,为int型变量;remainde ...

回复

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‘?这个'?是什么意思?
ID:782419 发表于 2020-6-17 21:43
remainder=(unsigned char)quotient%10
quotient=0xA2FC=41724
(unsigned char)quotient=0xFC,这没有什么问题吧
0xFC=252,这也没有问题吧
那么252对10取余等于2有什么问题么?
ID:123289 发表于 2020-6-16 15:19
INT 的最大值是多少?
有负的INT吗?
ID:592807 发表于 2020-6-16 13:46
星水天河 发表于 2020-6-16 12:27
改成这样之后在Watch窗口看到的remainder的值还是0xFE'?  请问这是怎么回事。。

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

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

2.png
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
ID:694871 发表于 2020-6-16 12:27
黄youhui 发表于 2020-6-16 08:47
remainder=(unsigned char)(quotient%10)

改成这样之后在Watch窗口看到的remainder的值还是0xFE'?  请问这是怎么回事。。
ID:592807 发表于 2020-6-16 08:47
remainder=(unsigned char)(quotient%10)

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

Powered by 单片机教程网

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