Operadores en C#: Guía completa y referencia
Un operador es un símbolo que indica al compilador que realice manipulaciones matemáticas o lógicas específicas. C# tiene un amplio conjunto de operadores integrados, clasificados en:
- Operadores aritméticos
- Operadores relacionales
- Operadores lógicos
- Operadores bit a bit
- Operadores de asignación
- Operadores diversos
Operadores aritméticos
Supongamos que la variable A vale 10 y la variable B vale 20:
| Operador | Descripción | Ejemplo |
|---|---|---|
| + | Suma dos operandos | A + B = 30 |
| - | Resta el segundo operando del primero | A - B = -10 |
| * | Multiplica ambos operandos | A * B = 200 |
| / | Divide el numerador por el denominador | B / A = 2 |
| % | Operador módulo: resto de división entera | B % A = 0 |
| ++ | Incrementa el valor entero en uno | A++ = 11 |
| -- | Decrementa el valor entero en uno | A-- = 9 |
Operadores relacionales
Supongamos A = 10, B = 20:
| Operador | Descripción | Ejemplo |
|---|---|---|
| == | Comprueba si dos operandos son iguales | (A == B) es falso |
| != | Comprueba si dos operandos no son iguales | (A != B) es verdadero |
| > | Comprueba si el operando izquierdo es mayor que el derecho | (A > B) es falso |
| < | Comprueba si el operando izquierdo es menor que el derecho | (A < B) es verdadero |
| >= | Comprueba si el izquierdo es mayor o igual que el derecho | (A >= B) es falso |
| <= | Comprueba si el izquierdo es menor o igual que el derecho | (A <= B) es verdadero |
Operadores lógicos
Supongamos A = true, B = false:
| Operador | Descripción | Ejemplo |
|---|---|---|
| && | AND lógico: verdadero si ambos operandos son no-cero | (A && B) es falso |
| || | OR lógico: verdadero si cualquiera de los dos operandos es no-cero | (A || B) es verdadero |
| ! | NOT lógico: invierte el estado lógico del operando | !(A && B) es verdadero |
Operadores bit a bit
Los operadores bit a bit trabajan sobre bits y realizan operaciones bit a bit. Tablas de verdad para &, |, ^:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Supongamos A = 60 (0011 1100) y B = 13 (0000 1101):
A & B = 0000 1100 (12)
A | B = 0011 1101 (61)
A ^ B = 0011 0001 (49)
~A = 1100 0011 (-61 en complemento a 2)
Tabla de operadores bit a bit:
| Operador | Descripción | Ejemplo |
|---|---|---|
| & | AND binario: copia bit si existe en ambos operandos | (A & B) = 12 |
| | | OR binario: copia bit si existe en cualquiera | (A | B) = 61 |
| ^ | XOR binario: copia bit si está en uno pero no en ambos | (A ^ B) = 49 |
| ~ | Complemento a uno: invierte los bits | (~A) = -61 |
| << | Desplazamiento a la izquierda | A << 2 = 240 |
| >> | Desplazamiento a la derecha | A >> 2 = 15 |
Operadores de asignación
| Operador | Descripción | Ejemplo |
|---|---|---|
| = | Asignación simple | C = A + B |
| += | Suma y asignación | C += A equivale a C = C + A |
| -= | Resta y asignación | C -= A equivale a C = C - A |
| *= | Multiplicación y asignación | C *= A equivale a C = C * A |
| /= | División y asignación | C /= A equivale a C = C / A |
| %= | Módulo y asignación | C %= A equivale a C = C % A |
| <<= | Desplazamiento izquierda y asignación | C <<= 2 equivale a C = C << 2 |
| >>= | Desplazamiento derecha y asignación | C >>= 2 equivale a C = C >> 2 |
| &= | AND bit a bit y asignación | C &= 2 equivale a C = C & 2 |
| ^= | XOR bit a bit y asignación | C ^= 2 equivale a C = C ^ 2 |
| |= | OR bit a bit y asignación | C |= 2 equivale a C = C | 2 |
Operadores diversos
| Operador | Descripción | Ejemplo |
|---|---|---|
| sizeof() | Devuelve el tamaño de un tipo de dato | sizeof(int) devuelve 4 |
| typeof() | Devuelve el tipo de una clase | typeof(StreamReader) |
| & | Devuelve la dirección de una variable | &a |
| * | Puntero a una variable | *a |
| ? : | Expresión condicional | Condición ? ValorX : ValorY |
| is | Determina si un objeto es de un tipo | if (Ford is Car) |
| as | Conversión sin lanzar excepción si falla | obj as StringReader |
Precedencia de operadores en C#
La precedencia determina el agrupamiento de términos en una expresión. Los operadores con mayor precedencia se evalúan primero.
Por ejemplo: x = 7 + 3 * 2; aquí x vale 13, no 20, porque * tiene mayor precedencia que +.
| Categoría | Operadores | Asociatividad |
|---|---|---|
| Postfijo | () [] -> . ++ -- | Izquierda a derecha |
| Unario | + - ! ~ ++ -- (tipo)* & sizeof | Derecha a izquierda |
| Multiplicativo | * / % | Izquierda a derecha |
| Aditivo | + - | Izquierda a derecha |
| Desplazamiento | << >> | Izquierda a derecha |
| Relacional | < <= > >= | 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 |
| Condicional | ?: | Derecha a izquierda |
| Asignación | = += -= *= /= %= >>= <<= &= ^= |= | Derecha a izquierda |
| Coma | , | Izquierda a derecha |
Lenguaje C
- Operadores en C# – Guía completa de operadores en C#
- Dominando operadores bit a bit y de desplazamiento en C#: Guía completa
- Dominando los Operadores en C++: Guía Completa con Ejemplos Prácticos
- Dominando los operadores en programación C: guía completa
- Dominando operadores bitwise en C: AND, OR, XOR, desplazamientos y complemento
- Guía completa de operadores en C: Tipos, funciones y ejemplos
- Guía Completa de Operadores en C++: Tipos, Uso y Mejores Prácticas
- Operadores en Verilog: Aritméticos y de control esenciales para síntesis
- Dominando operadores en Python: Guía completa
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Esenciales de Java: Guía Completa de Operadores Principales