看板 java 關於我們 聯絡資訊
在程式例題中看到 i=5; j1=0; j2=0; j1=(i++)+5; i=5; <--此行經ClareQ的提醒,補加入 :) j2=(++i)+5; --------------- 輸出結果 j1=10; j2=11; ------- 很納悶的地方是 明明括號的優先權是最高的, 故小弟的想法是(i++)與(++i)應該都是6, 也就是都會先處理i=i+1的部分 然後再處理後面+5的部分 但輸出結果並非如此 不知小弟的想法何處錯誤呢? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.116.63 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1421515218.A.5D8.html
Chikei: 因為兩個op的return value不一樣,不要把(i++) (++i)當做 01/18 01:37
Chikei: 對i作處理後再回傳i,把它想成一個吃i的function,函數內 01/18 01:39
ClareQ: 前面j1賦值後i==6,之後j2=7+5=12,所以j2==12才對吧:P 01/18 01:40
Chikei: 會修改i那個變數,但是回傳值只跟傳入時的值有關 01/18 01:40
yaerse: 回ClareQ,我少掉一行重新設定i=5; :P 01/18 02:10
※ 編輯: yaerse (123.194.116.63), 01/18/2015 02:11:32
yaerse: 先感恩Ckikei大的回覆,不過您的說法,小弟還是無法理解 01/18 02:14
yaerse: 第一句,"兩個op的return value不一樣"..此兩個op是指?? 01/18 02:15
Killercat: op = operator, ++i/i++分別是一種op 01/18 03:25
Killercat: 前者return value是i+1 後者是i 是不一樣的 01/18 03:26
Kenqr: 把++i和i++想成是兩個函數,這兩個函數都會把i的值+1 01/18 11:52
Kenqr: ++i會回傳i+1,i++會回傳i 01/18 11:53
longlongint: 把它看作兩行 01/19 00:33
longlongint: j1=I+5 01/19 00:34
longlongint: i=i+1 01/19 00:34
lineok: i++ 為後序遞增,故先做賦值,再做++ / ++i 則先做++再做賦 01/30 00:11
adrianshum: 樓上錯誤。Chikei 的解釋才是正確觀念 02/01 17:22
wkt: i++回傳值為i,++i回傳值為i+1 02/07 21:37