找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3359|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

為什么用Keil4演示++、--運(yùn)算時(shí),軟件運(yùn)行結(jié)果與實(shí)際結(jié)果對不上,求大神幫看看!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:366893 發(fā)表于 2018-7-7 16:54 | 只看該作者
只有i的值異常,其他值都正常,i正常因該是5,結(jié)果卻是10,你改變一下i的初始值看看,顯示結(jié)果是什么

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:366940 發(fā)表于 2018-7-7 17:11 | 只看該作者
只有i的值異常
回復(fù)

使用道具 舉報(bào)

地板
ID:366807 發(fā)表于 2018-7-7 18:57 | 只看該作者
hayden 發(fā)表于 2018-7-7 16:54
只有i的值異常,其他值都正常,i正常因該是5,結(jié)果卻是10,你改變一下i的初始值看看,顯示結(jié)果是什么

z的值也不對,將i的值改為5,結(jié)果i和z的值也是不對,后面將"z=j+k;"改為"z=i+k;"去運(yùn)行結(jié)果,結(jié)果是正確的。不知道是軟件本身的問題還是電腦系統(tǒng)的問題。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:366807 發(fā)表于 2018-7-7 19:01 | 只看該作者
將z=j+k;改為z=i+k;后,運(yùn)行結(jié)果是正確的。

Keil 4運(yùn)算試驗(yàn)結(jié)果.jpg (24.04 KB, 下載次數(shù): 134)

修改后的運(yùn)行結(jié)果

修改后的運(yùn)行結(jié)果

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

6#
ID:284488 發(fā)表于 2018-7-7 19:21 | 只看該作者
應(yīng)該是跟 i++ 及 ++i 有關(guān),一個(gè)是先做(++i),一個(gè)是后做(i++),可試看看。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:390775 發(fā)表于 2018-9-4 16:17 | 只看該作者
只有  i和z的值不對   不過  在使用 ++ -- 時(shí)  需要考慮到  編譯器自身的處理機(jī)制  建議你   用VS吧   
因?yàn)?nbsp; 早期的  編譯器   對 ++  --  不太一致    但是都是正確的   
加油
回復(fù)

使用道具 舉報(bào)

8#
ID:387733 發(fā)表于 2018-9-4 17:13 | 只看該作者
     2: {
     3:         unsigned int i=3,j,k,z;
C:0x0003    7F03     MOV      R7,#0x03   ;    R7 = i
C:0x0005    7E00     MOV      R6,#0x00
     4:         j=(++i)+5;
C:0x0007    0F       INC      R7
C:0x0008    EF       MOV      A,R7
C:0x0009    7001     JNZ      C:000C
C:0x000B    0E       INC      R6
C:0x000C    2405     ADD      A,#0x05
C:0x000E    FD       MOV      R5,A
C:0x000F    E4       CLR      A
C:0x0010    3E       ADDC     A,R6
C:0x0011    FC       MOV      R4,A
     5:         k=(i++)+6;
C:0x0012    EF       MOV      A,R7
C:0x0013    2406     ADD      A,#0x06
C:0x0015    FF       MOV      R7,A              ; R7 = k
C:0x0016    E4       CLR      A
C:0x0017    3E       ADDC     A,R6
C:0x0018    FE       MOV      R6,A
     6:         z=j+k;
     7:         
C:0x0019    ED       MOV      A,R5
C:0x001A    2F       ADD      A,R7
C:0x001B    F509     MOV      0x09,A
C:0x001D    EC       MOV      A,R4
C:0x001E    3E       ADDC     A,R6
C:0x001F    F508     MOV      0x08,A
     8: }
C:0x0021    22       RET      


因?yàn)槭蔷植孔兞,所以開始使用R7作為i變量,到第三句時(shí),i完成使命,增加了k變量,此時(shí)R7充當(dāng)了k的角色,所以它的值與k相同。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表