看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《d5123 (dd)》之銘言: : #define CUBE(x) x*x*x : int n = 3; : CUBE(++n) = ? : 我用電腦跑的結果是150, : 但不知實際運算過程為何? : 請板上高手賜教。 我在讀程式語言的時候也有遇到類似題目 我知道是++n*++n*++n 但我還是不知道為甚麼是150 我有看過13誡了 也爬過文 也看過精華區 真的找不到為甚麼 那三個數到底是甚麼 是?*?*? 這中間的運算過程是怎麼跑的 如果是5*5*6 這是怎麼加出來的 前面兩個加了兩次(n=5) 最後一個加三次(n=6)?? 我真的有爬文 我看別人都是下面推文一點就通 我看推文看了半天 還是不懂 還是有哪一篇文章我漏掉了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.175.26.70 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1458097913.A.9E1.html
nowar100: undefined behavior 不需要找為什麼... 03/16 11:13
Frozenmouse: 一個先問是什麼就輸了的概念 (? 03/16 11:31
suwako: 我猜測做運算前會先確認左右兩項 所以第一個運算左右兩邊 03/16 11:44
suwako: 的++n都會先做 這樣就會變成6*5*5了 03/16 11:45
Caesar08: 你真的有看13誡? 你真的有認真看13誡? 03/16 12:19
nowar100: 如果你真的想知道為什麼 大概告訴你 common subexpressi 03/16 12:27
nowar100: n 在 AST 還有後面優化階段,可能被各種組合方式亂兜 03/16 12:27
nowar100: 所以可能每家compiler不同選項都會有不同結果 03/16 12:28
nowar100: 所以 short answer: 不需要找為什麼 03/16 12:28
LPH66: 本版 #1Em1oVzU 提供其中三種詳解 03/16 13:24
LPH66: 這三種詳解都確實有不同語言或不同編譯器實作之 03/16 13:25