看板 Flash 關於我們 聯絡資訊
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:http://blog.ring.idv.tw/comment.ser?i=176 原出處 03/07 12:06
aquarianboy:可以看看java實際上是怎麼算這個加法的 :) 03/07 12:07
pikoto:其實真正注意它只有在java xd  03/10 02:22