作者a3567152 (期待的盼望)
看板java
標題[問題] 關於運算子優先順序的問題
時間Tue Feb 17 01:56:40 2015
爬過文了 沒有找到我想要的答案
第一題
int i=3, j=5;
i+=j-=2-1;
求i,j值 用java得到的答案是i=6,j=3
第二題
int i=3, j=3;
i=--i+j+j--+j;
求i,j值 用java得到的答案是i=10,j=2
我想要用的是使用
http://homepage.ttu.edu.tw/slhsieh/Java%20Programming/ch04.pdf
第40.41.42.43頁的邏輯理論來得到此兩題的答案
可是我一直想不通
像是第一題
不是應該減(-)的優先權比+=或-=高嗎?
會變成i+=j-=1;
可是單純從答案來看
i+=j-=2-1變成i=i+j,j=j-2即j=5-2=3,i=3+3=6,似乎沒有用到-1(這段是我純粹推測)
我知道實際上不太可能會寫成這麼畸形的程式碼
我只是想滿足我的求知慾
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.222.97
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1424109403.A.4FF.html
1F:推 LPH66: 第一題應該是你執行的程式有錯, 我的結果是 7 4 無誤 02/17 02:12
2F:→ LPH66: 第二題, ++ 跟 -- 的效果要結算完才會進入下一個運算元 02/17 02:13
3F:→ LPH66: 所以這一大串最終結算是 2+3+3+2 = 10 02/17 02:14
4F:→ LPH66: 是說這是你們老師出的題還是你自己隨便試的? 02/17 02:16
5F:→ a3567152: 我看書籍上的練習 02/17 08:53
6F:→ a3567152: 哈哈,所以以你的答案的話 02/17 08:55
7F:→ a3567152: 那些運算先後順序就可以通了,感謝 02/17 08:57
8F:→ cpper: 不要浪費生命做這種爛題目了,自己去寫個小專案才有意義 02/19 13:28
9F:推 pupuliao: 這些題目根本有病,我都直接用 括號解決 02/20 01:34
10F:→ pupuliao: 寫code應該以 簡單易懂為最高原則... 02/20 01:35
11F:→ OrzOGC: 有病+1... 02/20 19:37
12F:推 gt6174: 這種 code 用在 production 上會被罵吧 02/20 20:56
13F:→ wuliou: 有人寫這種code, review的時候一定被罵翻… 02/21 01:39
14F:→ longlongint: 沒有定義 02/21 08:07
15F:推 yyc1217: 會寫出這種code的人根本就不該當programmer 02/21 11:37
16F:→ KeySabre: 原po最後三行打完預防針 看來沒用 02/21 14:01
17F:→ cha122977: 這題應該會考倒很多專業人士 因為根本不該這樣寫XD 02/23 11:43
18F:→ cha122977: 為考試而出的題目:P 02/23 11:44
謝謝各位的意見~
※ 編輯: a3567152 (114.25.56.102), 02/24/2015 09:37:58
19F:→ realmeat: 因為每個語言會有他自己的定義, 看parser怎解釋 02/25 08:59
20F:→ realmeat: 記這種東西很沒有意義 02/25 09:00
21F:推 qrtt1: @cha122977 如果是做 compiler 跟研究 JLS 的專業人士 OK的 02/25 17:12
22F:推 jej: 個人覺得很有意思耶 xxs的時候 半調子就看不懂 02/25 21:46
23F:推 jej: 「Domain比較重要 」使得台灣突破不了冏境 02/25 21:50
24F:→ Chikei: 原po很明顯不是參與java 9或是java toolchain的人士 02/26 00:33
25F:→ Chikei: 那對他而言搞懂這有啥意義? 02/26 00:34
26F:→ OrzOGC: 學校叫獸很愛出這種無聊題目啊... 02/26 00:45
27F:推 longlongint: 沒有定義的行為 03/23 13:47