上一篇講的太模糊了,所以來補充一下 ++ 的用法
(此篇所講的也可套用至 --、** 等其他運算子中)
I. 題目
題目定義:以 z = 0 為起始,進行算式的 print 動作
注意!! 每個算式開始,z 都會先歸零
- z++ + z
- z + z++
- z + z++ + z
- z++ + z++
- z++ + z++ + z
- ++z + z++
前兩題為
上一篇出現過的題目
(不過 Tim 說他不懂,所以再講一次)
後面四題就是坎尼自己亂寫的,有興趣的人先不要往下看,自己算算看
為了方便理解,坎尼會
用 z1、z2、z3 來代替
該出現順序的 z 值
II. 解說
Q1. z++ + z
z = 0 , z1 = z++ , z2 = z
z1 = 0
(z++ 執行,但 z1 的值仍為 0)
z2 = 1
(因為前一個數為 z++,所以到這邊時 z=1,得到 z2 = z = 1)
z1 + z2 = 0 + 1 = 1 => 得到 列印值 = 1 , z = 1
Q2. z + z++
z = 0 , z1 = z , z2 = z++
z1 = 0
z2 = 0
(z++執行,但 z2 的值仍為 0)
z1 + z2 = 0 + 0 = 0 => 得到 列印值 = 0 , z = 1
Q3. z + z++ + z
z = 0 , z1 = z , z2 = z++ , z3 = z
z1 = 0
z2 = 0
(z++執行,但 z2 的值仍為 0)
z3 = 1
(因為前一個數為 z++,所以到這邊時 z=1,得到 z3 = z = 1)
z1 + z2 + z3 = 0 + 0 + 1 = 1 => 得到 列印值 = 1 , z = 1
Q4. z++ + z++
z = 0 , z1 = z++ , z2 = z++
z1 = 0
(z++ 執行,但 z1 的值仍為 0)
z2 = 1
(z++執行,且前一個數為 z++,故 z2 的值為 1)
z1 + z2 = 0 + 1 = 1 => 得到 列印值 = 1 , z = 2
Q5. z++ + z++ + z
z = 0 , z1 = z++ , z2 = z++ , z3 = z
z1 = 0
(z++ 執行,但 z1 的值仍為 0)
z2 = 1
(z++執行,且前一個數為 z++,故 z2 的值為 1)
z3 = 2
(因為前一個數為 z++,所以到這邊時 z=2,得到 z3 = z = 2)
z1 + z2 + z3 = 0 + 1 + 2 = 3 => 得到 列印值 = 3 , z = 2
Q6. ++z + z++
z = 0 , z1 = ++z , z2 = z++
z1 =1
(++z 運算前即會執行,得到 z = 1)
z2 =1
(z++執行,但 z2 的值仍為 1)
z1 + z2 = 1 + 1 = 2 => 得到 列印值 = 2 , z =2
III. 小結
以上各題用程式的執行結果
列印出來的第2個值為計算完的 z 值
(可對照上列算式結果)
如果還有不清楚的部分歡迎留言討論 ^^