“语法:运算符号”的版本间的差异
跳到导航
跳到搜索
(未显示同一用户的2个中间版本) | |||
第159行: | 第159行: | ||
|- | |- | ||
|} | |} | ||
[[Category:AviSynth 语法]] |
2010年1月26日 (二) 17:37的最新版本
和所有编程语言、脚本语言一样,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()函数(空函数),这样一来,“否则”就不必写了(比如有条件的Import或LoadPlugin)。
运算符号优先级
Avisynth中运算符号优先级列在下面表格中,越靠表格顶端的运算符号拥有越高的优先级。同一行的运算符号优先级相同。
* | / | % | ||||
+ | ++ | - | ||||
< | > | <= | >= | != | <> | == |
&& | ||||||
|| | ||||||
?: |