作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [讨论] 简单的加法运算
时间Fri Mar 7 01:50:25 2008
hmm...感觉很像是程式期末考老师的爱考题~XDD
我就依我的认知试着分解这个expression吧 (有错请纠正罗)
另外,参考到的AS operator precedence规则如下:
1. a-- 属於 Postfix operator
2. + 属於 Additive operator
3. = 属於 Assignment operator
4. 运算优先顺序为 Postfix > Additive > Assignment
5. Postfix operator会先回传整个expression的值才运作
大致的expression运作流程如下:
1. a-- + 1 → a会先+1,导致有个暂存值 x = 2
2. --的precedence大於=,所以先执行a -= 1 → 这个时候a值为1
3. 最後执行的 = 相当於 "a = x" → a的值又被改回2
结论:trace(a)得到的值是1,但是a确实有"短暂"时间为2
只是後来又因为assignment operator = 将a复写x之值
不过,写code就是要让意思简单明了
所以这种expression实际应用价值只有考试吧...
结论,请大家爱用小括弧XD
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凯特 = 蜚蠊猫 = 蟑螂猫
Gallery
http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比闪光(Adobe Flash)研讨区
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.75.107
※ 编辑: cjcat2266 来自: 61.228.75.107 (03/07 01:53)
1F:推 etrexetrex:咦,结果是2吗? 我以为是0 0.0 03/07 02:09
2F:推 etrexetrex:因为我把a = a-- + 1 看成以下两行: 03/07 02:11
3F:→ etrexetrex:a = 1 + 1 03/07 02:11
4F:→ etrexetrex:a = 1 - 1 03/07 02:12
5F:→ etrexetrex:哭哭 03/07 02:12
6F:→ cjcat2266:你这样应该没错,只是少了第三行 a = x; //x == 2 03/07 02:14
7F:推 aquarianboy:西啊,很像考题,应该没人习惯程式真的会这样写 :) 03/07 08:58
9F:推 aquarianboy:可以看看java实际上是怎麽算这个加法的 :) 03/07 12:07
10F:推 pikoto:其实真正注意它只有在java xd 03/10 02:22