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 因为是局部变量,所以开始使用R7作为i变量,到第三句时,i完成使命,增加了k变量,此时R7充当了k的角色,所以它的值与k相同。 |
只有 i和z的值不对 不过 在使用 ++ -- 时 需要考虑到 编译器自身的处理机制 建议你 用VS吧 因为 早期的 编译器 对 ++ -- 不太一致 但是都是正确的 加油 |
只有i的值异常 |