(此篇所講的也可套用至 --、** 等其他運算子中)
I. 題目
題目定義:以 z = 0 為起始,進行算式的 print 動作注意!! 每個算式開始,z 都會先歸零
- z++ + z
- z + z++
- z + z++ + z
- z++ + z++
- z++ + z++ + z
- ++z + z++
後面四題就是坎尼自己亂寫的,有興趣的人先不要往下看,自己算算看
為了方便理解,坎尼會用 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 = zz1 = 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 = zz1 = 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 值 (可對照上列算式結果)
如果還有不清楚的部分歡迎留言討論 ^^
沒有留言:
張貼留言