主题:  AS中的i++与i=i+1有何不同

XTC

职务:普通成员
等级:1
金币:0.0
发贴:14
注册:2001/11/27 15:16:45
#12002/1/12 21:59:58
经常见AS中出现i++为i递增,i=i+1也是递增,究竟两者有何不同呢?望别见笑



deecen

职务:普通成员
等级:1
金币:0.0
发贴:4
注册:2001/12/14 15:47:48
#22002/1/12 23:20:34
好像是一样的吧



5D限制级

职务:普通成员
等级:6
金币:10.0
发贴:4970
注册:2001/8/16 14:52:34
#32002/1/13 13:40:31
xtc在上个帖子中说
引用:
经常见AS中出现i++为i递增,i=i+1也是递增,究竟两者有何不同呢?望别见笑


两者作用范围不同 i++ 是先使用I的直 然后再对I进行加1 而 i=i+1 就是对I加1
前者是C里面的写法
++I 就相当与I=I+1 只不过++I可以用在语句中 它是 先加1在使用I
如 for (i=1;i<100;i++) for (i=1;i<100;++i)
i的第一个直是1 I的第一个直是2



Demon.S

职务:版主
等级:5
金币:10.0
发贴:2468
注册:2000/9/15 13:56:49
#42002/1/14 10:43:45
先加和后加的区别。



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#52002/1/14 21:09:14
当它们作为单独的语句出现时,功能一样,都是使i的值加1。

i++ or ++i 使用了一条汇编指令:

inc ax '假设i的值放在ax寄存器中

i=i+1 or i+=1 使用了两条汇编指令:

add ax,1 '假设i的值放在ax寄存器中
mov bx,ax '把ax寄存器的值传送到bx寄存器中去

由此可见i++的运行速度更快。

以上只是假定编译/解释程序将它们转换为最接近的汇编指令。flash player究竟如何解释,现在不得而知。