精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《fishforpt (游來游去的)》之銘言: : 而重點也就落在對Java來說 是否也同樣 : System.out.println(z++ + z); : 假設他是將整個運算域做完運算再給值print : 那麼第三行就變成 : z=z+1 + -1 : 結果也將一如所示print -1 出來 : 但這樣的算法不就等同於 (++z + z)嗎? : 而很明顯似乎並不是這麼運算的 : 從第一行的++z與第二行的z-- : 得知java的postfix operators 也是在結束segment才做運算 : 因此假設便失敗了 : 到底java的第三行.........發生了什麼事........... : 結果我還是沒有理解......... 不是,是Java的程式跟C不一樣之處, 它規定程式執行時,第一條規則是取值是由左邊運算元先取值, 第二條規則是複合運算式需先將子運算式(運算元)求解取值,才進行本身的計算. 當它處理 z++ + z 之前,必須先把二個sub-expression算完. 因此左項 z++ 先算,右項 z 也取值,這二項完成之後,再算加法. 雖然這樣寫 z++ 與 ++z 看起來一樣,但就語言規格來說,看起來蠻穩的, 複合運算式不會有模稜兩可的執行順序. 當然,跟C的意思不一樣啦. -- 鄉民A:灌C可以搞阿嬌啊?
鄉民B:我的Visual C++光碟哪裏去了?
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.228.219 ※ 編輯: oohay 來自: 59.112.228.219 (02/02 04:42)
fishforpt:哇喔~~我有原來如此的感覺吶....感謝大大指導 02/02 18:34