|
主题: i=i++ i==i++
|
 专业设计
职务:普通成员
等级:2
金币:2.0
发贴:657
|
#12002/1/28 15:32:05
i=i++ i==i++ 我不明白他门的区别
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
|
#22002/1/28 16:34:12
ramon在上个帖子中说 引用: i=i++ i==i++ 我不明白他门的区别
= 是赋值 == 是判断
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#32002/1/28 23:16:51
前一个导致i的值不发生变化,后一个永远为真值。
|
 redsteps
职务:普通成员
等级:1
金币:1.0
发贴:144
|
#42002/1/29 7:57:29
不过两个表达式执行后 i都会增加1
|
 路过的猪
职务:普通成员
等级:2
金币:1.0
发贴:334
|
#52002/1/29 9:15:19
redsteps在上个帖子中说 引用: 不过两个表达式执行后 i都会增加1
这种解释不正确! goldgoat的解释才正确!
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#62002/1/29 23:19:00
redsteps在上个帖子中说 引用: 不过两个表达式执行后 i都会增加1
后一个会,但前一个不会. 引用: 前一个导致i的值不发生变化
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
|
#72002/1/30 8:26:21
两个运算后i的值都会加1 虽然第一个赋值语句没有使 i 增加 但后面的++使 i 增加,先执行赋值 如果是这样:i = ++i; 就是先加 1
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#82002/1/30 22:26:11
我还是不同意楼上的意见。对于前一个,我认为尽管++使i的值以本次操作完成后自加,但i==i++(这一点我想大家应该没有什么疑问),所有,i=i++等效于i=i,赋值语句又使i等于自身。这已在flash中得到证实: i=3;
i=i++;
trace(i); 结果还是得到3 为什么++没有生效呢,我觉得它只在i++这句完成后使i的值加1,如果把这一句用汇编来表示,则会有几行(表示需要进行哪些步骤)。那么,i加1后语句只运行了一半,因为i++本身要赋给左边的i,其结果是在整个这一句执行完后,i的值不发生变化。 呵呵,以上都只是猜想。实际应用中根本没必要把表达式写这么复杂
编辑历史:[这消息被janlay编辑过(编辑时间2002-01-30 22:32:19)]
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
|
#92002/1/31 10:00:05
看了janlay的解释我感到非常意外,就在flash里面实验了一下,果然值没有增加 不过我觉得这是flash的bug或缺陷 因为在c语言里面 i 的值是增加的 我也做了实验,用的vc6和tc2都是增加的
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#102002/1/31 20:24:37
呵呵,每个人的解释可能不尽相同,也导致编译/解释的方法不一样。避开这种容易产生分歧的写法,才是明智的办法
|
 金山羊
职务:普通成员
等级:4
金币:10.0
发贴:827
|
#112002/2/1 17:26:14
是啊,像这种即没有什么用处,又容易出错的语句还是应该避免
5d.cn FLASHDEP TECHNOLOGY SUPPORT JAVA/ACTIONSCRIPT/javascript CFML/JSP/COLDFUSION/FLASH REMOTING JRUN/COLDFUSIONMX FLASH/DREAMWEARER
|