En la entrada anterior de esta serie sobre el lenguaje de guiones PHP se habló sobre los operadores que se emplean en este.
La presente entrada de este blog profundizará en el mismo tema que la anterior explicando el orden de precedencia que tienen los operadores cuando aparecen en una misma expresión dentro de un guión de PHP.
Las expresiones que únicamente poseen un operador no presentan problemas de precedencia. Los problemas comienzan cuando existe más de un operador. Si hay más de un operador y todos son del mismo tipo, el problema es simple, la expresión se evalúa de izquierda a derecha.
El problema es más complejo cuando, además de haber máis de un operador, estos son de diferente tipo. Para solucionar este problema se establece una precedencia para la resolución de los operadores.
Cada operador tiene una prioridad y, si dos operadores tienen la misma prioridad, primero se resuelve el que esté más a la izquierda. Por otra parte, si los operadores tienen igual precedencia su asociatividad decide cómo se agrupan. Además, los operadores de igual precedencia que no son asociativos no se pueden usar unos con otros. Por último, se debe tener en cuenta que la asociatividad del operador ternario difiere del lenguaje de programación C/C++.
La siguiente tabla enumera los operadores en orden de precedencia, con los de más alta precedencia al comienzo. Los operadores en la misma línea tienen igual precedencia, en tal caso la asociatividad decide el agrupamiento.
La presente entrada de este blog profundizará en el mismo tema que la anterior explicando el orden de precedencia que tienen los operadores cuando aparecen en una misma expresión dentro de un guión de PHP.
Las expresiones que únicamente poseen un operador no presentan problemas de precedencia. Los problemas comienzan cuando existe más de un operador. Si hay más de un operador y todos son del mismo tipo, el problema es simple, la expresión se evalúa de izquierda a derecha.
El problema es más complejo cuando, además de haber máis de un operador, estos son de diferente tipo. Para solucionar este problema se establece una precedencia para la resolución de los operadores.
Cada operador tiene una prioridad y, si dos operadores tienen la misma prioridad, primero se resuelve el que esté más a la izquierda. Por otra parte, si los operadores tienen igual precedencia su asociatividad decide cómo se agrupan. Además, los operadores de igual precedencia que no son asociativos no se pueden usar unos con otros. Por último, se debe tener en cuenta que la asociatividad del operador ternario difiere del lenguaje de programación C/C++.
La siguiente tabla enumera los operadores en orden de precedencia, con los de más alta precedencia al comienzo. Los operadores en la misma línea tienen igual precedencia, en tal caso la asociatividad decide el agrupamiento.
No asociativo | clone new | "Clone" y "new". |
Izquierda | [ | Matriz(). |
Derecha | ** | Aritmético. |
Derecha | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ |
Tipos e incremento/decremento. |
No asociativo | instanceof | Tipos. |
Derecha | ! | Lógico. |
Izquierda | * / % | Aritmético. |
Izquierda | + - . | Aritmético y cadena. |
Izquierda | << >> | Bit a bit. |
No asociativo | < <= > >= | Comparación. |
No asociativo | == != === !== <> <=> | Comparación. |
Izquierda | & | Bit a bit y referencias. |
Izquierda | ^ | Bit a bit. |
Izquierda | | | Bit a bit. |
Izquierda | && | Lógico. |
Izquierda | || | Lógico. |
Derecha | ?? | Comparación. |
Izquierda | ?: | Ternario. |
Derecha | = += -= *= **= /= .= %= &= |= ^= <<= >>= | Asignación. |
Izquierda | and | Lógico. |
Izquierda | xor | Lógico. |
Izquierda | or | Lógico. |
En la siguiente entrada pueden verse ejemplos de todo lo visto hasta ahora acerca del PHP.
Espero que esta entrada haya sido interesante y/o útil al lector. En caso afirmativo, aguardo que el lector la comente y/o la comparta, por favor.
No hay comentarios:
Publicar un comentario
Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.