KEIL编译出错?关于y=y++;

2020-02-04 09:28发布

850:           selkey1f=selkey1f++;
   851:     
C:0x03D3    AF12     MOV      R7,selkey1f(0x12)
C:0x03D5    0512     INC      selkey1f(0x12)
C:0x03D7    8F12     MOV      selkey1f(0x12),R7

在自己的机子上编译的,结果selkey1f不变化;用的kel4,而在同事的机子上keil2及keil4均编译为 INC selkey1f(0x12)。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
30条回答
babysnail
2020-02-06 05:51
回复【11楼】any_014  
-----------------------------------------------------------------------
那最后selkey1f不是应该加一了吗?
-----------------------------------------------------------------------

我理解应该是这样的

1、取=号右边即 《selkey1f++》表达式的值 ,根据

++i,--i   在前 是先加(减)后使用
i++,i--  在后则是先使用后加(减)  值是其本身,即汇编中的R7

2、按优先级关系 selkey1f++ 先执行

3、才是赋值运算 selkey1f= 第1步取的值,即汇编中的R7

一周热门 更多>