語法:運算符號

出自NMM Doc
跳至導覽 跳至搜尋

和所有編程語言、腳本語言一樣,Avisynth里的運算符號允許對變量進行運算。運算符號組成構建表達式的基礎,表達式則是構建Avisynth腳本的磚瓦。

Avisynth的運算符號遵循和C語言一樣的規則,但較為寬鬆。規則一樣是指運算優先級和結合順序;寬鬆是指有一些例外,下面會講解。

各變量類型允許使用的運算符號

對於所有類型的數域變量(剪輯、整數、浮點、布爾),可以使用下面幾種運算符號

== 等於
!= 不等於
<> 不等於(和!=等效,v2.07)


對於數值類型的變量(整數、浮點),可以使用下面的整數/浮點專用運算符號

+
-
*
/
% 取餘數
>= 大於或等於
<= 小於或等於
< 小於
> 大於


以前版本的Avisynth從右往左處理表達式,由此產生了意想不到的效果,比如:

  • a = 10 - 5 - 5 實際上是 10 - (5 - 5) = 10 而不是 (10 - 5) - 5 = 0 !
  • b = 100. / 2. / 4. 實際上是 100. / (2. / 4.) = 200 而不是 (100. / 2.) / 4. = 12.5 !

在v2.53里,這些「漏洞」均已修復。


對於字符串類型的變量,可以使用下面的字符串專用運算符號

+ 合併
>= 大於或等於(v2.07)
<= 小於或等於(v2.07)
< 小於(v2.07)
> 大於(v2.07)


對於剪輯類型的變量,可以使用下面的剪輯專用運算符號

+ 非對齊連接
++ 對齊連接


對於布爾類型的變量,可以使用下面的布爾專用運算符號

||
&&
?: 條件執行


條件執行運算符號示例:

b = (a==true) ? 1 : 2

用偽代碼解釋:

如果 (a=true) 那么 b=1 否则 b=2

從v2.07開始,Avisynth在條件執行區塊里提供了一個NOP()函數(空函數),這樣一來,「否則」就不必寫了(比如有條件的ImportLoadPlugin)。

運算符號優先級

Avisynth中運算符號優先級列在下面表格中,越靠表格頂端的運算符號擁有越高的優先級。同一行的運算符號優先級相同。

* / %
+ ++ -
< > <= >= != <> ==
&&
||
?: