Manuel de suivi dynamique Solaris

Priorité

Les règles en langage D concernant la priorité et l'associativité des opérateurs sont décrites dans le tableau suivant. Ces règles sont quelque peu complexes mais nécessaires pour assurer une compatibilité précise avec les règles de priorité des opérateurs ANSI-C. Les entrées du tableau sont triées par ordre de priorité, de la plus élevée à la plus faible.

Tableau 2–11 Priorité et associativité des opérateurs de D

Opérateurs 

Associativité 

() [] -> .

gauche à droite 

! ~ ++ -- + - * & (type) sizeof stringof offsetof xlate

droite à gauche 

* / %

gauche à droite 

+ -

gauche à droite 

<< >>

gauche à droite 

< <= > >=

gauche à droite 

== !=

gauche à droite 

&

gauche à droite 

^

gauche à droite 

|

gauche à droite 

&&

gauche à droite 

^^

gauche à droite 

||

gauche à droite 

?:

droite à gauche 

= += -= *= /= %= &= ^= |= <<= >>=

droite à gauche 

,

gauche à droite 

Le tableau comprend plusieurs opérateurs qui n'ont pas encore été présentés ; ils seront traités dans des chapitres ultérieurs :

sizeof

Calcule la taille d'un objet (Chapitre7Structs et Unions)

offsetof

Calcule le décalage d'un membre type (Chapitre7Structs et Unions)

stringof

Convertit l'opérande en chaîne (Chapitre6Chaînes de caractères)

xlate

Convertit un type de données (Chapitre40Translateurs)

& unaire

Calcule l'adresse d'un objet (Chapitre5Pointeurs et ensembles)

* unaire

Déréférence un pointeur sur un objet (Chapitre5Pointeurs et ensembles)

-> et .

Accède à un membre d'une structure ou d'un type d'union (Chapitre7Structs et Unions)

L'opérateur , (virgule) présenté dans le tableau est dédié à la compatibilité avec l'opérateur ANSI-C correspondant et permet notamment d'évaluer un ensemble d'expressions de gauche à droite et de retourner la valeur de l'expression de poids faible. Cet opérateur n'est fourni que pour la compatibilité avec le langage C et ne doit généralement pas être utilisé.

L'entrée () du tableau sur la priorité des opérateurs représente un appel de fonction. Des exemples d'appel de fonction, comme printf() et trace(), sont présentés dans le Chapitre1Introduction. La virgule sert également en langage D à énumérer des arguments en fonctions et à constituer des listes de clés de tableaux associatifs. Cette virgule n'a rien à voir avec l'opérateur et n'assure aucune évaluation de gauche à droite. Le compilateur D ne garantit en rien l'ordre d'évaluation des arguments en fonction ou des clés en tableau associatif. Vous devez veiller à utiliser des expressions aux effets obliques interagissants, comme la paire d'expressions i et i++, dans ces contextes.

L'entrée [] du tableau de priorité des opérateurs représente un tableau ou une référence de tableau associatif. Des exemples de tableaux associatifs sont présentés dans le Chapitre1Introduction. Un type spécial de tableau associatif, appelé groupement, est décrit dans le Chapitre9Groupements. Vous pouvez également utiliser l'opérateur [] pour créer des index dans des tableaux C au format fixe, comme indiqué dans le Chapitre5Pointeurs et ensembles.