作者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)
推 etrexetrex:咦,結果是2嗎? 我以為是0 0.0 03/07 02:09
推 etrexetrex:因為我把a = a-- + 1 看成以下兩行: 03/07 02:11
→ etrexetrex:a = 1 + 1 03/07 02:11
→ etrexetrex:a = 1 - 1 03/07 02:12
→ etrexetrex:哭哭 03/07 02:12
→ cjcat2266:你這樣應該沒錯,只是少了第三行 a = x; //x == 2 03/07 02:14
推 aquarianboy:西啊,很像考題,應該沒人習慣程式真的會這樣寫 :) 03/07 08:58
推 aquarianboy:可以看看java實際上是怎麼算這個加法的 :) 03/07 12:07
推 pikoto:其實真正注意它只有在java xd 03/10 02:22