carpcarey 发表于 2020-6-16 13:41 你的回答是对的。感谢!还有一个问题是上面的截图里remainder=0XFE‘?这个'?是什么意思? |
remainder=(unsigned char)quotient%10 quotient=0xA2FC=41724 (unsigned char)quotient=0xFC,这没有什么问题吧 0xFC=252,这也没有问题吧 那么252对10取余等于2有什么问题么? |
INT 的最大值是多少? 有负的INT吗? |
星水天河 发表于 2020-6-16 12:27 单步执行看看吧,我这没问题 |
2.png (74.04 KB, 下载次数: 65)
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 |
黄youhui 发表于 2020-6-16 08:47 改成这样之后在Watch窗口看到的remainder的值还是0xFE'? 请问这是怎么回事。。 |
remainder=(unsigned char)(quotient%10) |