Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Dominando la precedencia y asociatividad de operadores en C#: Guía práctica

Dominando la precedencia y asociatividad de operadores en C#

Este tutorial en profundidad explica cómo el compilador de C# evalúa las expresiones aplicando las reglas de precedencia y asociatividad de operadores. Aprende con ejemplos claros y tablas de referencia.

Precedencia de operadores en C#

La precedencia de operadores define el orden en que se evalúan las partes de una expresión. Cada operador de C# tiene un nivel de prioridad fijo, lo que garantiza que el compilador procese las expresiones de forma consistente.

Por ejemplo, el operador de multiplicación * tiene mayor precedencia que la adición +. Por tanto, en la expresión:

int x = 4 + 3 * 5;

la multiplicación se realiza primero, dando como resultado x = 19.

Si la adición tuviera prioridad sobre la multiplicación, el resultado sería 35, pero C# sigue la jerarquía de precedencia establecida.


Tabla de precedencia de operadores

La siguiente tabla lista los operadores de mayor a menor precedencia.

++, --
Precedencia de operadores en C#
CategoríaOperadores
Incremento y decremento postfijo
Incremento, decremento y unarios prefijos++, --, +, -, !, ~
Multiplicativos*, /, %
Aditivos+, -
Desplazamiento<<, >>
Relacionales<, <=, >, >=
Igualdad==, !=
AND bit a bit&
XOR bit a bit^
OR bit a bit|
AND lógico&&
OR lógico||
Ternario? :
Asignación=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

Las asignaciones tienen la prioridad más baja, mientras que los incrementos/decrementos postfijos están en la cima.


Ejemplo 1: Precedencia de operadores

using System;
namespace OperatorDemo {
    class OperatorPrecedence {
        public static void Main(string[] args) {
            int result1;
            int a = 5, b = 6, c = 4;
            result1 = --a * b - ++c;
            Console.WriteLine(result1);
            bool result2;
            result2 = b >= c + a;
            Console.WriteLine(result2);
        }
    }
}

La ejecución de este programa imprime:

19 False

Pasos de evaluación:

La segunda expresión muestra que la adición + tiene mayor precedencia que la comparación >=, por lo que c + a se evalúa antes de la comparación.


Asociatividad de operadores en C#

Cuando dos operadores comparten la misma precedencia, el compilador usa la asociatividad para decidir el orden de evaluación. La mayoría de los operadores de C# son de izquierda a derecha, pero algunos son de derecha a izquierda.

Ejemplo:

int a = 5, b = 6, c = 3;
int result = a * b / c;

Como * y / son de izquierda a derecha, la multiplicación se realiza primero, dando 10.

La asociatividad de derecha a izquierda es crucial en cadenas de asignación:

int a = 5, b = 6, c = 3;
a = b = c;

El valor 3 se asigna a b, luego b a a, resultando en que todas las variables contienen 3.

La tabla siguiente resume la asociatividad de operadores en C#.

Asociatividad de operadores en C#
CategoríaOperadoresAsociatividad
Incremento y decremento postfijo++, --Izquierda a derecha
Incremento, decremento y unarios prefijos++, --, +, -, !, ~Derecha a izquierda
Multiplicativos*, /, %Izquierda a derecha
Aditivos+, -Izquierda a derecha
Desplazamiento<<, >>Izquierda a derecha
Relacionales<, <=, >, >=Izquierda a derecha
Igualdad==, !=Izquierda a derecha
AND bit a bit&Izquierda a derecha
XOR bit a bit^Izquierda a derecha
OR bit a bit|Izquierda a derecha
AND lógico&&Izquierda a derecha
OR lógico||Izquierda a derecha
Ternario? :Derecha a izquierda
Asignación=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=Derecha a izquierda

Los operadores clave de derecha a izquierda incluyen los prefijos unarios, el operador ternario y todas las asignaciones.


Ejemplo 2: Asociatividad en acción

using System;
namespace OperatorDemo {
    class OperatorAssociativity {
        public static void Main(string[] args) {
            int a = 5, b = 6, c = 3;
            int result = a * b / c;
            Console.WriteLine(result);
            a = b = c;
            Console.WriteLine($"a = {a}, b = {b}, c = {c}");
        }
    }
}

La salida es:

10 a = 3, b = 3, c = 3

Lenguaje C

  1. Entendiendo palabras clave e identificadores en C#: Reglas, listas y mejores prácticas
  2. Operadores en C# – Guía completa de operadores en C#
  3. Operador ternario en C#: Guía concisa para expresiones condicionales
  4. Clases y objetos en C#: Fundamentos para POO robusta
  5. Dominando clases y métodos abstractos en C#: Guía práctica
  6. Entendiendo clases y métodos parciales en C#
  7. Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento
  8. Operadores en C++ explicados: Tipos, ejemplos y programas de muestra
  9. Entendiendo constantes y literales en C: Tipos, uso y mejores prácticas
  10. Dominando Entrada y Salida en programación C
  11. Guía Completa de Fecha y Hora en C++