Guía completa de operadores en C: Tipos, funciones y ejemplos
Un operador es un símbolo que indica al compilador realizar funciones matemáticas o lógicas específicas. C es rico en operadores integrados y proporciona los siguientes tipos:
- Operadores Aritméticos
- Operadores Relacionales
- Operadores Lógicos
- Operadores Bit a Bit
- Operadores de Asignación
- Operadores Misceláneos
Veremos cómo funciona cada operador.
Operadores Aritméticos
Tabla con operadores aritméticos soportados por C. Asume variable A = 10 y B = 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 numerador entre denominador. | B / A = 2 |
| % | Operador Módulo y resto de división entera. | B % A = 0 |
| ++ | Operador incremento aumenta valor entero en uno. | A++ = 11 |
| -- | Operador decremento disminuye valor entero en uno. | A-- = 9 |
Operadores Relacionales
Tabla con operadores relacionales. Asume A=10, B=20:
| Operador | Descripción | Ejemplo |
|---|---|---|
| == | Comprueba si dos operandos son iguales. Si sí, condición verdadera. | (A == B) no es verdadero. |
| != | Comprueba si dos operandos no son iguales. Si no iguales, condición verdadera. | (A != B) es verdadero. |
| > | Comprueba si operando izquierdo > derecho. Si sí, condición verdadera. | (A > B) no es verdadero. |
| < | Comprueba si operando izquierdo < derecho. Si sí, condición verdadera. | (A < B) es verdadero. |
| >= | Comprueba si izquierdo >= derecho. Si sí, condición verdadera. | (A >= B) no es verdadero. |
| <= | Comprueba si izquierdo <= derecho. Si sí, condición verdadera. | (A <= B) es verdadero. |
Operadores Lógicos
Tabla con operadores lógicos. Asume A=1 (verdadero), B=0 (falso):
| Operador | Descripción | Ejemplo |
|---|---|---|
| && | AND lógico. Si ambos operandos no-cero, condición verdadera. | (A && B) es falso. |
| || | OR lógico. Si cualquiera no-cero, condición verdadera. | (A || B) es verdadero. |
| ! | NOT lógico. Invierte estado lógico. Si condición verdadera, la hace falsa. | !(A && B) es verdadero. |
Operadores Bit a Bit
Trabajan a nivel de bits. 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 |
Asume A=60 (0011 1100), B=13 (0000 1101):
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 (12) A|B = 0011 1101 (61) A^B = 0011 0001 (49) ~A = 1100 0011 (-61 en complemento a dos)
Tabla de operadores bit a bit (A=60, B=13):
| Operador | Descripción | Ejemplo |
|---|---|---|
| & | AND binario: copia bit si existe en ambos operandos. | (A & B) = 12 (0000 1100) |
| | | OR binario: copia bit si existe en cualquiera. | (A | B) = 61 (0011 1101) |
| ^ | XOR binario: copia bit si está en uno pero no en ambos. | (A ^ B) = 49 (0011 0001) |
| ~ | Complemento a uno (unario): invierte bits. | (~A) = -61 (1100 0011 en complemento a dos) |
| << | Desplazamiento izquierdo: mueve bits del operando izquierdo n posiciones. | A << 2 = 240 (1111 0000) |
| >> | Desplazamiento derecho: mueve bits del operando izquierdo n posiciones a la derecha. | A >> 2 = 15 (0000 1111) |
Operadores de Asignación
Tabla de operadores de asignación:
| Operador | Descripción | Ejemplo |
|---|---|---|
| = | Asignación simple. Asigna valor del lado derecho al izquierdo. | C = A + B asigna A+B a C |
| += | Suma Y asignación. Suma derecho a izquierdo y asigna resultado al izquierdo. | C += A equivale a C = C + A |
| -= | Resta Y asignación. Resta derecho de izquierdo y asigna resultado. | C -= A equivale a C = C - A |
| *= | Multiplica Y asignación. | C *= A equivale a C = C * A |
| /= | Divide Y asignación. | C /= A equivale a C = C / A |
| %= | Módulo Y asignación. | C %= A equivale a C = C % A |
| <<= | Desplazamiento izquierdo Y asignación. | C <<= 2 igual a C = C << 2 |
| >>= | Desplazamiento derecho Y asignación. | C >>= 2 igual a C = C >> 2 |
| &= | AND bit a bit Y asignación. | C &= 2 igual a C = C & 2 |
| ^= | XOR bit a bit Y asignación. | C ^= 2 igual a C = C ^ 2 |
| |= | OR bit a bit Y asignación. | C |= 2 igual a C = C | 2 |
Operadores Misceláneos: sizeof y ternario
Otros operadores importantes: sizeof y ? : (ternario).
| Operador | Descripción | Ejemplo |
|---|---|---|
| sizeof() | Devuelve tamaño de una variable. | sizeof(a), donde a es int, devuelve 4. |
| & | Devuelve dirección de una variable. | &a; devuelve dirección real. |
| * | Puntero a una variable. | *a; |
| ? : | Expresión condicional. | Si Condición verdadera ? valor X : sino valor Y |
Precedencia de operadores en C
La precedencia determina agrupación de términos y cómo se evalúa una expresión. Operadores con mayor precedencia se evalúan primero. Ejemplo: x = 7 + 3 * 2 asigna 13 (no 20) porque * tiene mayor precedencia que +.
Tabla de precedencia (mayor arriba, menor abajo):
| Categoría | Operador | 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, Uso y Mejores Prácticas
- Operadores en Verilog: Aritméticos y de control esenciales para síntesis
- Operadores en MATLAB: Guía Completa de Aritméticos, Relacionales, Lógicos y Bitwise
- 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