Re: [問題] i值結果

看板TransCSI作者 (RJ-king)時間17年前 (2009/04/01 02:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
※ 引述《walks (蹦蹦跳跳)》之銘言: : Write down the value of i after the following lines of C code were executed: : 1.: i = 1 ; : 2.: ++i+=i++; : 這邊觀念不太清楚 能詳細說明一下嗎 : 謝謝^^ 老實說這個答案好像不同compiler會不一樣,因為對語句解釋的不同 大概講一下RJ牌人腦compiler的答案跟流程 1.: i = 1 ; //將i指定為1 2.: ++i+=i++ ; //先做++i(i變成2),然後做i+=i(i指定成i+i,i變成4) //然後做i++(i變成5) 所以i的值最後是5 還有就是VS2005跟VS2008跟DEV C++會直接跟你說"++i+=i++"這行語法錯誤 如果題目直接註明一定有答案或是你怕老師認為一定會有答案,你可以考慮用我的答案 不然就直接說"++i+=i++"這行錯誤:缺少";"吧... 我對第二行的解釋只是單純基於運算子優先順序而已... 事實上這樣寫很多方面是錯誤的,千萬不要寫出這種程式 會這樣寫的只有自以為這樣出很有深度的老師... 這可以算是Undefined behavior吧... http://en.wikipedia.org/wiki/Undefined_behavior http://blog.ez2learn.com/2008/09/27/evil-undefined-behavior/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.92.133
文章代碼(AID): #19qbiAJx (TransCSI)
討論串 (同標題文章)
文章代碼(AID): #19qbiAJx (TransCSI)