→ ggBird: ub 08/25 10:05
推 Schottky: undefined behavior,出考題的是誰,叫他不用來上班了 08/25 10:12
→ Schottky: 置底十三戒之第八戒,這不是你的問題,考題不能這樣出 08/25 10:14
※ 編輯: blueblueChen (219.68.215.61), 08/25/2018 10:41:41
推 eye5002003: 我有寫過這樣的考題,一個老工程師出的 08/25 10:41
→ chuegou: r1=i++; r2=++i; i=r1+r2; 我猜啦 08/25 11:43
→ chuegou: 如果硬要知道為什麼是22 反組譯看組語如何? 08/25 11:44
推 stupid0319: 何必浪費生命在智障的問題上 08/25 12:52
→ sarafciel: 未定義指的是"標準"未定義 08/25 13:27
→ sarafciel: C的標準沒有定義 i++ + ++i 時三個運算元的執行順序 08/25 13:30
→ sarafciel: 所以編譯器在編這行的時候就是隨編譯器高興的意思 08/25 13:31
→ sarafciel: 編是一定可以編過 只是你換個編譯器結果就不一樣 08/25 13:32
→ sarafciel: 子 08/25 13:32
→ sarafciel: BTW 出這考題的是智障 不要理他 08/25 13:43
※ 編輯: blueblueChen (219.68.215.61), 08/25/2018 17:47:51
→ blueblueChen: 那為何 x=x++叫做未定義 *p++ 就不是? 08/25 18:47
推 jerryh001: 因為*p++明確知道怎麼做 08/25 19:02
→ blueblueChen: 我有看jserv的 blog 08/25 22:20
→ blueblueChen: C 語言沒規定 i++ 或 ++i 的「加 1」動作到底是在 08/25 22:20
→ blueblueChen: 何時時刻執行,所以說 printf("%d\n",a++); 也會不 08/25 22:21
→ blueblueChen: 知道 [+1] 是在何時進行的嗎? 但從以前的經驗來看 08/25 22:22
→ blueblueChen: 都是先印出,再[+1] 08/25 22:22
推 AstralBrain: 對, 不知道 08/25 22:33
→ AstralBrain: 印出來的值是"a++"這個expression的傳回值 08/25 22:34
→ AstralBrain: 不是a當下的值 08/25 22:35
→ sarafciel: 靠XD 翻了一下標準 如果我的破英文沒有影響理解的話 08/25 23:26
→ sarafciel: +1執行的時間點在99以前沒定 11以後是有定的XDDD 08/25 23:27
→ sarafciel: 詳情見C11標準6.5.2.4 不過這篇問的東西還是UB就是了 08/25 23:32
→ oToToT: 總之,沒事不要這樣寫最保險,可讀性有夠低 08/26 14:41