遞增運算子(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 後,傳回原本舊的數值;而 --x 與 x-- 的差異也是類似。例如:
x = 1; y = ++x;
此時的 x 為 2,而 y 為 2,
x = 1; y = x++;
此時的 x 為 2,而 y 為 1。
遞增運算子與一個變數所組成的算式與一般的算式相同,可以用於任何其他算式可以使用的地方,例如判斷式之中:
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 中各種運算子的優先順序,依照由低而高的順序排列:
- 分隔符號(statement separators):
";"、","。 - 指定運算子(assignment):
"="、"+="、"-="、"*="、"/=",這些運算子是由最右邊開始執行。 - 短路布林運算子 OR 與 AND:
"||"、"&&"。 - 元素對元素布林運算子 OR 與 AND:
"|"、"&"。 - 比較運算子:
"<"、"<="、"=="、">="、">"、"!="、"~="。 - 冒號運算子:
":"。 - 加法與減法運算子:
"+"、"-"。 - 乘法與除法運算子:
"*"、"/"、""、"."、".*"、"./"。 - 轉置(transpose):
"'"、".'"。 - 一元運算子:
"+"、"-"、"++"、"--"、"!"、"~"。 - 指數運算子(exponentiation):
"^"、"**"、".^"、".**"。