遞增運算子(Increment Operators)

遞增運算子(Increment Operators)可以將變數的值增加 1 或減少 1,其使用方式與 C 語言中的遞增運算子相同,以下是 Octave 中的遞增運算子:

  • ++x:將 x 的值加 1,傳回增加後的數值。
  • --x:將 x 的值減 1,傳回增加後的數值。
  • x++:將 x 的值加 1,傳回增加前的數值。
  • x--:將 x 的值減 1,傳回增加前的數值。

++x 會先將變數 x 的值加 1 後,再取其新的值傳回,其作用完全等於 x = x + 1。而 x++ 則是將變數 x 的值加 1 後,傳回原本舊的數值;而 --xx-- 的差異也是類似。例如:

x = 1;
y = ++x;

此時的 x2,而 y2

x = 1;
y = x++;

此時的 x2,而 y1

遞增運算子與一個變數所組成的算式與一般的算式相同,可以用於任何其他算式可以使用的地方,例如判斷式之中:

a = b = 1;
a++ > b

輸出為

ans = 0

運算子優先權(Operator Precedence)

當算式中包含多個運算子時,運算子優先權(operator precedence)會決定其運算的順序,例如乘法運算子 * 都優先順序就會比加法運算子 + 高,因此 a + b * c 的運算順序是先將 b 乘以 c 再加上 a,也就是 a + (b * c)

使用者可以使用小括號更改預設的運算子優先權,此優先權亦可視為當使用者沒有使用括號時,預設的括號規則。當在使用一些不常見的運算子組合時,縱使依照預設的運算子優先權可以不需要括號,但一般還是建議加入小括號,因為不是每個閱讀程式的人都記得每個運算子的優先順序,有明確的括號可以避免不必要的錯誤發生。

一般當兩個運算子有相同的優先權時,在左邊的運算子會先執行。指定運算子(assignment operator)與指數運算子(exponentiation operator)與一般運算子不同,這兩種運算子會由最右邊的運算子開始執行,例如 a - b + c 其運算順序為 (a - b) + c,而 a = b = c 的運算順序則為 a = (b = c)

運算子的優先權對於前置的一元運算子(prefix unary operators)是很重要的,例如:-x^2 的執行順序為 -(x^2),這是因為負號 - 的優先順序低於指數運算子 ^

以下是 Octave 中各種運算子的優先順序,依照由低而高的順序排列:

  1. 分隔符號(statement separators):";"","
  2. 指定運算子(assignment):"=""+=""-=""*=""/=",這些運算子是由最右邊開始執行。
  3. 短路布林運算子 OR 與 AND:"||""&&"
  4. 元素對元素布林運算子 OR 與 AND:"|""&amp"
  5. 比較運算子:"<""<=""=="">="">""!=""~="
  6. 冒號運算子:":"
  7. 加法與減法運算子:"+""-"
  8. 乘法與除法運算子:"*""/""""."".*""./"
  9. 轉置(transpose):"'"".'"
  10. 一元運算子:"+""-""++""--""!""~"
  11. 指數運算子(exponentiation):"^""**"".^"".**"