Operadores
Los operadores son símbolos o palabras reservadas que permiten realizar operaciones sobre uno o varios operandos (variables, constantes o expresiones) para obtener un resultado.
Son un elemento fundamental de cualquier lenguaje de programación y permiten realizar cálculos, comparaciones, asignaciones y controlar el flujo lógico de los programas.
Conceptos fundamentales
Para comprender los operadores es necesario conocer los siguientes conceptos:
- Operando: valor sobre el que actúa el operador.
- Operador: símbolo que realiza la operación.
- Expresión: combinación de operandos y operadores.
- Resultado: valor obtenido tras evaluar la expresión.
- Precedencia: orden en que se evalúan los operadores.
- Asociatividad: dirección en la que se evalúan operadores con la misma prioridad.
Clasificación de los operadores
Los operadores pueden clasificarse según la operación que realizan.
Operadores aritméticos
Permiten realizar operaciones matemáticas.
| Operador | Operación |
|---|---|
| + | Suma |
| - | Resta |
| * | Multiplicación |
| / | División |
| % | Módulo (resto) |
Ejemplo
int resultado = (8 + 2) * 5;
Operadores de asignación
Permiten almacenar un valor en una variable.
| Operador | Significado |
|---|---|
| = | Asignación |
| += | Suma y asigna |
| -= | Resta y asigna |
| *= | Multiplica y asigna |
| /= | Divide y asigna |
| %= | Calcula el resto y asigna |
Ejemplo
x += 5; // Equivale a x = x + 5;
Operadores relacionales
Comparan dos valores y devuelven un resultado booleano (true o false).
| Operador | Significado |
|---|---|
| == | Igual que |
| != | Distinto de |
| > | Mayor que |
| < | Menor que |
| >= | Mayor o igual |
| <= | Menor o igual |
Ejemplo
edad >= 18
Operadores lógicos
Permiten combinar expresiones booleanas.
| Operador | Significado |
|---|---|
| && | AND lógico |
| || | OR lógico |
| ! | NOT lógico |
Ejemplo
edad >= 18 && carnet
Operadores de incremento y decremento
Incrementan o reducen una variable en una unidad.
| Operador | Operación |
|---|---|
| ++ | Incremento |
| -- | Decremento |
Existen dos formas:
- Preincremento:
++i - Postincremento:
i++
Operador condicional (ternario)
Permite realizar una decisión sencilla en una única expresión.
Sintaxis
condición ? valor1 : valor2;
Ejemplo
String resultado = edad >= 18 ? "Mayor" : "Menor";
if-else sencilla.
Operadores a nivel de bits (Bitwise)
Actúan directamente sobre la representación binaria de los datos.
| Operador | Operación |
|---|---|
| & | AND |
| | | OR |
| ^ | XOR |
| ~ | Complemento |
| << | Desplazamiento izquierda |
| >> | Desplazamiento derecha |
Se utilizan principalmente en:
- Programación de sistemas.
- Redes.
- Criptografía.
- Optimización de memoria.
Precedencia de operadores
Cuando una expresión contiene varios operadores, estos se evalúan siguiendo un orden determinado.
De mayor a menor prioridad:
- Paréntesis
() - Incremento y decremento (
++,--) - Multiplicación, división y módulo (
*,/,%) - Suma y resta (
+,-) - Operadores relacionales (
<,>,<=,>=) - Igualdad (
==,!=) - Operadores lógicos (
&&,||) - Asignación (
=)
Evaluación de expresiones
Las expresiones se resuelven aplicando la precedencia y la asociatividad de los operadores.
Ejemplo
3 + 5 * 2
Resultado:
3 + (5 × 2) = 13
Mientras que:
(3 + 5) * 2
Resultado:
16
Comparación entre operadores lógicos y bit a bit
| Operadores lógicos | Operadores bit a bit |
|---|---|
| Trabajan con booleanos | Trabajan con bits |
| Devuelven true o false | Devuelven un valor numérico |
| Admiten corto circuito | Evalúan siempre ambos operandos |
| Uso habitual en condiciones | Uso habitual en programación de bajo nivel |
Caso práctico
Situación
Se desea comprobar si un usuario puede acceder a una aplicación.
Condiciones:
- Debe ser mayor de edad.
- Debe estar autenticado.
Código:
if (edad >= 18 && autenticado) {
acceso = true;
}
En este caso:
>=es un operador relacional.&&es un operador lógico.- El resultado final es un valor booleano.
if y while.
Ventajas e inconvenientes
Ventajas
- Permiten construir expresiones complejas.
- Facilitan la toma de decisiones.
- Simplifican cálculos y comparaciones.
- Mejoran la legibilidad cuando se utilizan correctamente.
- Reducen la cantidad de código.
Inconvenientes
- Un uso incorrecto de la precedencia puede provocar errores.
- El abuso de operadores en una misma expresión reduce la legibilidad.
- Algunos operadores presentan diferencias sutiles que suelen confundirse.
Errores habituales
- Confundir
=con==. - Confundir
&&con&. - Confundir
||con|. - Olvidar la precedencia de los operadores.
- No distinguir entre preincremento (
++i) y postincremento (i++). - Utilizar expresiones excesivamente complejas.
Cómo evitarlos
- Utilizar paréntesis cuando exista cualquier duda sobre la precedencia.
- Recordar que
=asigna y==compara. - Diferenciar claramente operadores lógicos y operadores bit a bit.
- Dividir las expresiones complejas en varias instrucciones si es necesario.
Relaciones con otros temas
Los operadores están estrechamente relacionados con:
- Variables.
- Tipos de datos.
- Expresiones.
- Estructuras de control (
if,switch). - Bucles (
for,while,do-while). - Funciones y métodos.
- Programación orientada a objetos.
Conceptos clave para recordar
[!NOTE]
- Los operadores realizan operaciones sobre uno o varios operandos.
- Los principales tipos son: aritméticos, asignación, relacionales, lógicos, incremento/decremento, ternario y bit a bit.
- Los operadores relacionales devuelven un valor booleano.
=asigna un valor, mientras que==compara dos valores.&&y||realizan evaluación de corto circuito.++iyi++no siempre producen el mismo resultado dentro de una expresión.- La precedencia determina el orden de evaluación de los operadores.
- Los paréntesis tienen la máxima prioridad y mejoran la claridad del código.