Re: [問題] ++i + ++i + ++i

看板C_and_CPP (C/C++)作者 (.д.)時間14年前 (2011/11/14 19:46), 編輯推噓5(5043)
留言48則, 18人參與, 最新討論串4/4 (看更多)
大家認為怎麼拆比較合理: y= ++x * ++x * ++x; (1) ++x; ++x; y=x*x; ++x; y=y*x; (2) ++x; ++x; ++x; y=x*x*x; (3) y=++x; y=y*++x; y=y*++x; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.27.142.104

11/14 19:49, , 1F
原本就錯了 怎知原本程式碼的意圖是要做什麼?
11/14 19:49, 1F

11/14 19:49, , 2F
我覺得L大苦心被浪費
11/14 19:49, 2F

11/14 19:53, , 3F
顯然之前文章跟推文都是講心酸的
11/14 19:53, 3F

11/14 20:04, , 4F
你問看看compiler怎麼看得吧
11/14 20:04, 4F

11/14 20:09, , 5F
如果不去考慮compiler單純用數學邏輯來看呢?
11/14 20:09, 5F

11/14 20:10, , 6F
那就請去數學板喔
11/14 20:10, 6F

11/14 20:12, , 7F
你把L大放到哪去了……數學有這樣用= =
11/14 20:12, 7F

11/14 20:12, , 8F
單純用數學好像沒有 ++ 吧,頂多是乘法
11/14 20:12, 8F

11/14 20:12, , 9F
你怎不去讀一下C++ HOW TO PROGRAMMING
11/14 20:12, 9F

11/14 20:19, , 10F
大家好激動.那個東西叫未定義行為.跟數學無關.那是c
11/14 20:19, 10F

11/14 20:20, , 11F
compiler怎麼做的問題.
11/14 20:20, 11F

11/14 20:31, , 12F
就說是undefined behavior了, 沒有哪個合理哪個不合理= =
11/14 20:31, 12F

11/14 20:34, , 13F
這樣好了 你認為一般沒學過程式的會給什麼答案
11/14 20:34, 13F

11/14 20:34, , 14F
假如只懂++的定義跟會算數學的話
11/14 20:34, 14F

11/14 20:35, , 15F
所以這就是要去找尋的大祕寶阿
11/14 20:35, 15F

11/14 20:36, , 16F
討論隔壁棚Java會怎麼算會比較有意義,Java是有規定的
11/14 20:36, 16F

11/14 20:37, , 17F
或者說怎樣最快最短...
11/14 20:37, 17F

11/14 20:39, , 18F
我的想法是把 int #undef 掉, 換自己的類別實作各種運算子
11/14 20:39, 18F

11/14 20:40, , 19F
遇到的運算都 queue 起來在 ;(分號) 最後一個rvalue銷毀時
11/14 20:40, 19F

11/14 20:41, , 20F
再一次 dequeue 運算
11/14 20:41, 20F

11/14 20:44, , 21F
這樣講好了.你再不去看13戒或是L大的文章.明天起來
11/14 20:44, 21F

11/14 20:44, , 22F
就算這種寫法有標準答案,看到這種程式碼還是會讓人生氣
11/14 20:44, 22F

11/14 20:45, , 23F
這篇一定會不見.數學沒有++時.你用人腦去想答案.
11/14 20:45, 23F

11/14 20:46, , 24F
但是編譯器根本不管這個時.你一直問只會得到一個結果
11/14 20:46, 24F

11/14 20:46, , 25F
這篇不見
11/14 20:46, 25F

11/14 20:54, , 26F
http://codepad.org/zJf1ur3s Java-style 這樣挺清楚的XD
11/14 20:54, 26F

11/14 21:04, , 27F
Orz
11/14 21:04, 27F

11/14 21:26, , 28F
寫程式寫這麼久 從來沒寫過這種程式碼 相信其他人也是
11/14 21:26, 28F

11/14 21:27, , 29F
所以我完全無法理解你懂這個要幹嘛
11/14 21:27, 29F

11/14 21:28, , 30F
如果是想了解編譯器 ...跨越真理之門的另一端吧
11/14 21:28, 30F

11/15 00:23, , 31F
其實這是有點考人格特質的面試題目 直接答未定行為反而低分
11/15 00:23, 31F

11/15 00:24, , 32F
認真分析的的 恭喜你 老闆愛用
11/15 00:24, 32F

11/15 01:02, , 33F
前面的推文推爽的 Orz
11/15 01:02, 33F

11/15 08:16, , 34F
我覺得超哥會不爽
11/15 08:16, 34F

11/15 10:55, , 35F
我可不想和會認真思考未定義行為的人工作......
11/15 10:55, 35F

11/15 11:03, , 36F
我覺得很多人只是自以為懂「++」的定義而已。實際上這很難
11/15 11:03, 36F

11/15 11:08, , 37F
突然想到「6÷2(1+2)=?」 ...
11/15 11:08, 37F

11/15 11:12, , 38F
實際上我搞不懂第一個7是怎麼來的.我用腦子想應該是6
11/15 11:12, 38F

11/15 13:02, , 39F
回樓上, 所以我才在 d 兄那篇推那句話...
11/15 13:02, 39F

11/15 13:02, , 40F
至於 7 怎麼來的我那篇文的中間的順序就是 7*7*8 的結果
11/15 13:02, 40F

11/15 13:03, , 41F
其實我不懂為什麼C++不肯像Java一樣做好明確的規定
11/15 13:03, 41F

11/15 13:03, , 42F
也就是到計算乘了才去取 x 的值的結果
11/15 13:03, 42F

11/15 13:03, , 43F
為了保留實作的最佳化空間嗎....?
11/15 13:03, 43F

11/15 13:40, , 44F
如果compile時每個地方都check就慢了 所以就把問題丟給
11/15 13:40, 44F

11/15 13:41, , 45F
使用者
11/15 13:41, 45F

11/15 13:42, , 46F
盡量
11/15 13:42, 46F

11/15 13:46, , 47F
c不愛check
11/15 13:46, 47F

11/15 14:13, , 48F
為了最佳化。
11/15 14:13, 48F
文章代碼(AID): #1EmF-brR (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EmF-brR (C_and_CPP)