语法:运算符号

来自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中运算符号优先级列在下面表格中,越靠表格顶端的运算符号拥有越高的优先级。同一行的运算符号优先级相同。

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