遞增運算子(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):
"^"
、"**"
、".^"
、".**"
。