看板 Soft_Job 關於我們 聯絡資訊
觀念上,++operand和operand++在同一個statement才會的。 然而仍取決於實作的compiler。 不存在那種寫法比較高明或要逼死誰?! 寫法是對programmer來說的, 對機器沒差。 ※ 引述《ah7675 (阿懋)》之銘言: : 最近因為同事在code review時表示 i++會隨編譯器實作而有不同行為 : 所以要求我不要用這種寫法,到這邊應該很多人會說:"沒錯啊,這你都不懂?" : 關鍵在於他舉的例子是這樣的 : i=10; : val = array[i++]; : val equals array[10] or array[11]? : 我整個傻住了,我的理解是,答案絕對是val=array[10] : 而隨編譯器會變化的地方是,在該expression/statement所構成的 : 數個指令中"遞增"的時機可能不同,所以如果在一個expression中存取i : 兩次以上會造成未定義行為 : 但suffix increament operator必定是先return再遞增 : 請問我的理解才是錯的嗎? : 那GLIBC裡的strcmp實作也是不可靠的嗎? : https://fossies.org/dox/glibc-2.21/string_2strcmp_8c_source.html : 還有另一個例子是說const global variable is better than Macro?? : 理由是global variable只有一份、用再多次也只是reference同一份 : 但是macro假設被使用10次就會造成code size增加10倍 : 用來舉例的型別是int : 這也是顛覆了我一直以來的觀念,讓我相當震撼 : 我應該趕快請前輩喝飲料順便多請教他,還是趁試用期還沒過趕快離職? : 請各位給我一些意見,感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.64.168 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1429910824.A.BD3.html
Feis: 這觀念有點問題 04/25 07:11
Feis: 有很多情況都會是 undefined behaviour 04/25 07:12
Feis: 而大部份情況下寫出 undefined behaviour 就是不應該的 04/25 07:12
testPtt: 知道自己在做什麼記得註解就行了 04/25 08:03
fr3ak: 樓上: 十個需要加注解的地方有九個不如改成直白的寫法來的 04/25 09:27
fr3ak: 好. 04/25 09:27
remmurds: 就是有人喜歡賣弄一堆華而不實的寫法 04/25 12:19
Bencrie: 推樓上 XD 04/25 12:58
suhorng: (!!) 遇見 fr3ak XD 04/26 13:17