[閒聊] i++ is undefined behavior?
最近因為同事在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), 來自: 175.181.142.174
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1429888933.A.36A.html
→
04/24 23:34, , 1F
04/24 23:34, 1F
→
04/24 23:38, , 2F
04/24 23:38, 2F
→
04/24 23:47, , 3F
04/24 23:47, 3F
→
04/25 00:01, , 4F
04/25 00:01, 4F
→
04/25 00:02, , 5F
04/25 00:02, 5F
→
04/25 00:02, , 6F
04/25 00:02, 6F
→
04/25 00:02, , 7F
04/25 00:02, 7F
→
04/25 00:03, , 8F
04/25 00:03, 8F
→
04/25 00:04, , 9F
04/25 00:04, 9F
→
04/25 00:08, , 10F
04/25 00:08, 10F
→
04/25 00:09, , 11F
04/25 00:09, 11F
→
04/25 00:10, , 12F
04/25 00:10, 12F
→
04/25 00:12, , 13F
04/25 00:12, 13F
→
04/25 00:13, , 14F
04/25 00:13, 14F
→
04/25 00:23, , 15F
04/25 00:23, 15F
→
04/25 00:24, , 16F
04/25 00:24, 16F
→
04/25 00:25, , 17F
04/25 00:25, 17F
→
04/25 00:42, , 18F
04/25 00:42, 18F
→
04/25 00:43, , 19F
04/25 00:43, 19F
→
04/25 00:44, , 20F
04/25 00:44, 20F
→
04/25 00:45, , 21F
04/25 00:45, 21F
→
04/25 00:46, , 22F
04/25 00:46, 22F
→
04/25 01:17, , 23F
04/25 01:17, 23F
→
04/25 01:18, , 24F
04/25 01:18, 24F
→
04/25 01:41, , 25F
04/25 01:41, 25F
→
04/25 01:41, , 26F
04/25 01:41, 26F
→
04/25 01:43, , 27F
04/25 01:43, 27F
推
04/25 02:00, , 28F
04/25 02:00, 28F
→
04/25 08:23, , 29F
04/25 08:23, 29F
推
04/25 20:48, , 30F
04/25 20:48, 30F
推
04/26 01:18, , 31F
04/26 01:18, 31F
→
04/26 08:45, , 32F
04/26 08:45, 32F
推
04/27 21:00, , 33F
04/27 21:00, 33F
→
04/27 21:01, , 34F
04/27 21:01, 34F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 6 篇):