Guía de seguimiento dinámico de Solaris

Prioridad

Las reglas de D para la prioridad y la asociación de operadores se describen en la siguiente tabla. Estas reglas son en cierta medida complejas, pero son necesarias para proporcionar una compatibilidad precisa con las reglas de prioridad de operadores ANSI-C. Las entradas de la tabla se muestran en orden de la máxima prioridad a la mínima.

Tabla 2–11 Prioridad y asociación de operadores en D

operadores 

Asociación 

() [] -> .

izquierda a derecha 

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

derecha a izquierda 

* / %

izquierda a derecha 

+ -

izquierda a derecha 

<< >>

izquierda a derecha 

< <= > >=

izquierda a derecha 

== !=

izquierda a derecha 

&

izquierda a derecha 

^

izquierda a derecha 

|

izquierda a derecha 

&&

izquierda a derecha 

^^

izquierda a derecha 

||

izquierda a derecha 

?:

derecha a izquierda 

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

derecha a izquierda 

,

izquierda a derecha 

Existen varios operadores en la tabla que todavía no se han analizado; estos operadores se tratarán en próximos capítulos:

sizeof

Calcula el tamaño de un objeto (Capítulo 7Estructuras y uniones)

offsetof

Calcula el desplazamiento de un miembro de tipo (Capítulo 7Estructuras y uniones)

stringof

Convierte el operando en una cadena (Capítulo 6Cadenas)

xlate

Traduce un tipo de datos (Capítulo 40Traductores)

unario &

Calcula la dirección de un objeto (Capítulo 5Punteros y matrices)

* unario

Anula la referencia de un puntero respecto a un objeto (Capítulo 5Punteros y matrices)

-> y .

Accede a un miembro de una estructura o un tipo de unión (Capítulo 7Estructuras y uniones)

El operador coma (,) indicado en la tabla es para la compatibilidad con el operador de coma de ANSI-C, que se puede utilizar para evaluar un conjunto de expresiones de izquierda a derecha y devolver el valor de la expresión más a la derecha. Este operador se proporciona estrictamente para la compatibilidad con C y normalmente no debería utilizarse.

La entrada () en la tabla de prioridad de operadores representa una llamada de función; los ejemplos de llamadas a funciones como printf() y trace() se presentan en el Capítulo 1Introducción. En D también se utiliza una coma para enumerar argumentos de funciones y para formar listas de claves de matriz asociativas. Esta coma no es la misma que el operador coma y no garantiza la evaluación de izquierda a derecha. El compilador de D no proporciona ninguna garantía en cuanto al orden de evaluación de los argumentos a una función o las claves a una matriz asociativa. Debe tener cuidado al utilizar en estos contextos expresiones con efectos secundarios de interacción como el par de expresiones i y i++.

La entrada [] en la tabla de prioridad de operadores representa una matriz o una referencia de matriz asociativa. En el Capítulo 1Introducción se presentan ejemplos de matrices asociativa. Un tipo especial de matriz asociativa denominada agregación se describe en el Capítulo 9Adiciones. El operador [] también se puede utilizar para indexar matrices C de tamaño fijo, como se describe en el Capítulo 5Punteros y matrices.