![]() |
發布時間: 2020-6-15 19:28
正文摘要:本帖最后由 星水天河 于 2020-6-15 19:29 編輯 例如執行i=0xA2FC%10;得到的是0x04。這個結果是正確的。(0xA2FC=41724) 但是語句remainder=quotient%10;(quotient變量當前的值為0xA2FC,為int型變量;remainde ... |
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) |