但老師說他不會解,只會用程式跑
所以坎尼就來試解一下 ^^
I. 題目
首先來看一下題目請問上述四個列印值各為何?
前兩個應該不用講,有問題的應該是第三及第四個列印值
答案如下
II. 解法
糾竟~ 最後兩個值是怎麼運算的呢? 坎尼用中斷點及監看式一一道來print 第一行之前,z = -1
但由於此處用 ++z => 先進行 z = z + 1 運算,再進行列印
得到列印值為 0,此時 z 也為 0
print 第二行之前,z 為 0
此處用 z-- => 先列印出值,再進行 z = z - 1 運算
列印值為 0,此時 z 的值為 -1
第三行,尚未進行運算之前,z 為 -1
但 z++ + z 的計算順序呢?
(可以看到 visual studio 很貼心的把計算式排過,題目上是 z+++z )
依執行先後,可以把式子看成 (z++) + z在這邊 z++ 後面因為還有運算式,所以程式就先進行 z = z + 1 的動作 => 得到 z = 0
接著再去加後面的 z => -1 + 0 = -1
得到列印值 = -1 , z = 0
最後一行, z + z++,此時 z = 0
由於 z++ 後面沒有式子,所以先做完 0 + 0 之後直接列印,再進行 z = z + 1
得到列印值為 0,z = 1
III. 小結
這是西元 2009 年的最後一篇 blog 文,再數十分鐘就是 2010 年的到來 (in Taiwan)Tim 在半年前跑去準備研究所考試
坎尼也因工作忙碌+怠惰使得今年文章產量比顯減少了很多 ^^" (汗
接下來新的一年,坎尼會盡量加油分享心得
向其他技術 blog 看齊 ^^
參考連結:MSDN ++ operator