Re: [問題] i值結果
※ 引述《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
討論串 (同標題文章)