[問題] 關於(i++)與(++i)

看板java作者 (寂寞時就擁著書本吧)時間9年前 (2015/01/18 01:20), 9年前編輯推噓2(2015)
留言17則, 9人參與, 最新討論串1/1
在程式例題中看到 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

01/18 01:37, , 1F
因為兩個op的return value不一樣,不要把(i++) (++i)當做
01/18 01:37, 1F

01/18 01:39, , 2F
對i作處理後再回傳i,把它想成一個吃i的function,函數內
01/18 01:39, 2F

01/18 01:40, , 3F
前面j1賦值後i==6,之後j2=7+5=12,所以j2==12才對吧:P
01/18 01:40, 3F

01/18 01:40, , 4F
會修改i那個變數,但是回傳值只跟傳入時的值有關
01/18 01:40, 4F

01/18 02:10, , 5F
回ClareQ,我少掉一行重新設定i=5; :P
01/18 02:10, 5F
※ 編輯: yaerse (123.194.116.63), 01/18/2015 02:11:32

01/18 02:14, , 6F
先感恩Ckikei大的回覆,不過您的說法,小弟還是無法理解
01/18 02:14, 6F

01/18 02:15, , 7F
第一句,"兩個op的return value不一樣"..此兩個op是指??
01/18 02:15, 7F

01/18 03:25, , 8F
op = operator, ++i/i++分別是一種op
01/18 03:25, 8F

01/18 03:26, , 9F
前者return value是i+1 後者是i 是不一樣的
01/18 03:26, 9F

01/18 11:52, , 10F
把++i和i++想成是兩個函數,這兩個函數都會把i的值+1
01/18 11:52, 10F

01/18 11:53, , 11F
++i會回傳i+1,i++會回傳i
01/18 11:53, 11F

01/19 00:33, , 12F
把它看作兩行
01/19 00:33, 12F

01/19 00:34, , 13F
j1=I+5
01/19 00:34, 13F

01/19 00:34, , 14F
i=i+1
01/19 00:34, 14F

01/30 00:11, , 15F
i++ 為後序遞增,故先做賦值,再做++ / ++i 則先做++再做賦
01/30 00:11, 15F

02/01 17:22, , 16F
樓上錯誤。Chikei 的解釋才是正確觀念
02/01 17:22, 16F

02/07 21:37, , 17F
i++回傳值為i,++i回傳值為i+1
02/07 21:37, 17F
文章代碼(AID): #1KkfdINO (java)