精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《necole236 (necole236)》之銘言: : : 喔對,自己也搞得很混淆, Java的 z++ + z : 我有疑問.. 為什麼程式要用這種奇怪令人混淆的寫法呢? : 這根本是大有問題吧,這麼做一點意義都沒有 : 如果簡單成清楚一點,那應該好多了吧 : 考試考這種題目真的很奇怪,如果我是老闆,我會把寫出這種程式的人開除 針對這點疑問,我有個反疑問: 純就C語言來講, z++ + z 讓你混淆之處出現在哪個位置. 我認為,既然C語言給出了postfix ++的寫法,也容許expression包含sub-expresion, 就可以這樣寫. 稍微拼湊一下複合句就嫌寫法太混淆,或許某種程度上顯示出自己無能,是嗎? 延伸想法,若 z++ + z 仍太複雜,那麼一般公認的簡單postfix ++寫作規範似乎只有: 1. 最好是簡單的postfix ++計算式自己佔ㄧ行,於是你只能寫 i++ 或 n++. 2. 如果要讓postfix ++計算式成為另一個計算式的子算式, 你必須保證postfix ++操作對象不存在於父算式的任何位置. -- 鄉民A:灌C可以搞阿嬌啊?
鄉民B:我的Visual C++光碟哪裏去了?
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.114.86
necole236:你可以按 a 搜尋 oohay 就知道了 02/03 21:02
※ 編輯: oohay 來自: 218.160.114.86 (02/03 21:14)
izsoak:推樓上XD 02/03 21:03
StubbornLin:反過來說 這樣寫應該沒什麼好處吧? 02/03 21:04
StubbornLin:還要想第二個z到底是++後的還++前的 02/03 21:05
StubbornLin:寫程兩行易讀性大增 一目了然 這麼簡單的程式碼 02/03 21:07
StubbornLin:幹麻要寫得那麼難懂 囧 02/03 21:07
abcdefghi:coding standard定好,一個statement,只對一個variable做 02/03 21:18
abcdefghi:assignment,包括 a = b++; 也一樣禁止就好了. 隨便一個 02/03 21:18
abcdefghi:爛compiler最佳化一開,a = b; b++; 這種東西都可以處理. 02/03 21:19
oohay:很抱歉, z+++z恰好只對一個變數做assignment 02/03 21:19
oohay:所以我才問,除此之外,到底哪裡混淆? 02/03 21:20
abcdefghi:就算沒開最佳化,現代的32,16bit cpu執行這類程式,也快到 02/03 21:19
abcdefghi:讓你感覺不出來. 好吧,那改成,一個statement只做一次 02/03 21:21
abcdefghi:assignment. :) 02/03 21:22
oohay:z+++z仍是只做一次assignment而已 02/03 21:23
abcdefghi:那就改成"同一statement中,不要讀取被assign值的變數" 02/03 21:28
oohay:那 z++ 由於是postfix ++,還沒發生assignment,其實我再加個 02/03 21:35
oohay: + z,變成 z++ + z,這樣還是可以 02/03 21:36
oohay:coding standard越改越多耶 XD 02/03 21:36
cole945:是 a = z++ + z; 會混淆.. 不是 z++ + z; 會混淆.. 02/03 21:51
oohay:對啊,我從頭到尾只講z+++z,沒講它指定給什麼東西,一直講混淆 02/04 10:08