Opérateurs

From Avisynth wiki
Jump to: navigation, search

Comme dans tous les langages de programmation et de script, les opérateurs du langage de script AviSynth permettent d'effectuer des actions (opérations) sur des variables. Les opérateurs forment la base pour construire des expressions, qui sont les blocs essentiels des scripts AviSynth.

Les opérateurs d'AviSynth suivent à peu près les mêmes règles que les opérateurs en langage C, en ce qui concerne leur signification, leur priorités et leur associativité. Par à peu près, nous voulons dire qu'il y a des exceptions, qui sont indiquées ci-dessous.

Opérateurs disponibles par Type

Pour tous les types d'opérandes (clip, int, float, string, bool) vous pouvez utiliser les opérateurs suivants:

== est égal
 != n'est pas égal
<> pas égal (alternative à !=, v2.07)

Pour les types numériques (int, float) vous pouvez utiliser les opérateurs suivants spécifiques aux int/float:

+ addition
- soustraction
* multiplication
/ division
 % modulo
>= supérieur ou égal à
<= inférieur ou égal à
< inférieur à
> supérieur à

Des versions antérieures d'AviSynth analysaient les expressions de la droite à la gauche, ce qui donnait des résultats inattendus. Par exemple:

  • a = 10 - 5 - 5 donnait 10 - (5 - 5) = 10 au lieu de (10 - 5) - 5 = 0 !
  • b = 100. / 2. / 4. donnait 100. / (2. / 4.) = 200 au lieu de (100. / 2.) / 4. = 12.5 !

Ces "bugs" ont été corrigés dans la v2.53!

Pour les types string vous pouvez utiliser les opérateurs suivants spécifiques aux strings:

+ concaténer
>= supérieur ou égal à (v2.07)
<= inférieur ou égal à (v2.07)
< inférieur à (v2.07)
> supérieur à (v2.07)

Pour les types clip vous pouvez utiliser les opérateurs suivants spécifiques aux clips:

+ identique à la fonction UnalignedSplice
++ identique à la fonction AlignedSplice

Pour les types bool (true/false) vous pouvez utiliser les opérateurs suivants spécifiques aux bools:

|| ou
&& et
 ?: exécution de code conditionnelle

L'opérateur d'exécution conditionnel est utilisé dans l'exemple suivant:

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

Ce qui signifie en pseudo-basic:

si (a=true) alors b=1 sinon b=2

A partir de la version v2.07, AviSynth propose une fonction NOP() qui peut être utilisée à l'intérieur d'un bloc d'exécution conditionnelle dans les cas ou le "sinon" n'est pas souhaité (comme un Import conditionnel ou LoadPlugin).

Priorités des Opérateurs

La priorité des opérateurs d'AviSynth est présentée dans le tableau ci-dessous. Les opérateurs les plus importants en haut du tableau ont une priorité supérieure. Les opérateurs à l'intérieur de la même ligne on le même ordre de priorité.

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

Retour à la Syntaxe d'AviSynth.

Personal tools