# Los operadores de C++ de un vistazo: los operadores más importantes

No importa si [quieres aprender C++](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/tutorial-c/) o si llevas mucho tiempo trabajando con este lenguaje de programación: los operators C++ son la base de una programación eficiente con C++. Algunos operadores se corresponden a su significado intuitivo, mientras que otros pueden no ser obvios a primera vista.

## ¿Qué son los operadores C++?

Básicamente, un operador es simplemente un **signo para una operación**. Puede referirse a uno, pero sobre todo a varios operandos. Como resultado, se obtiene un nuevo valor en la mayoría de los casos. Un ejemplo popular son los operadores matemáticos que conoces del colegio, por ejemplo “+” para la suma y “-” para la resta de dos números.

Los operadores de C++ no solo se distinguen según su propósito funcional. La **aridad de los operadores** (número básico de argumentos necesarios para que funcione el operador) también es un criterio importante:

<table>
  <thead>
    <tr>
      <th><strong>Aridad</strong></th>
      <th><strong>Número de operandos</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Operadores unarios</td>
      <td>Un operando</td>
      <td>Negación lógica: `!var_name`</td>
    </tr>
    <tr>
      <td>Operadores binarios</td>
      <td>Dos operandos</td>
      <td>Suma: `value1 + value2`</td>
    </tr>
    <tr>
      <td>Operadores ternarios</td>
      <td>Tres operandos</td>
      <td>Condición If-else: `condition? condition_true : condition_false`</td>
    </tr>
  </tbody>
</table>

## Precedencia de los operadores

Al igual que con los operadores matemáticos aritméticos en la escuela o los [operadores de Python](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-operators/) también existe la llamada precedencia de operadores o “operator precedence” con los operadores de C++. Especifica el **orden de evaluación de los operadores.** Para los operadores aritméticos, se aplican las conocidas reglas de punto antes de guion. Sin embargo, también hay que observar ciertas reglas para otros operadores de C++.

```cpp
if (var1 && var2 || var3) {
    hacer_algo();
}
```

En el ejemplo anterior, se evalúa primero la expresión lógica detrás del operador “if”. Además, el operador &amp;&amp; (“y” lógico) tiene prioridad sobre el operador “||” (“o” lógico). Así, si la evaluación de “var1 &amp;&amp; var2” o la evaluación de “var3” devuelve “true”, se ejecuta la llamada a la función “hacer\_algo()”.

Si quieres ir sobre seguro, también puedes utilizar **corchetes**.

### Sobrecarga de operadores C++

Puedes sobrecargar la mayoría de los operadores de C++. Esto significa que es posible asignar **un nuevo significado a** un operador existente **en un contexto**. Para sobrecargar un operador en C++, se necesita la **palabra clave “operator”** seguida del operador C++ que se quiere sobrecargar. Por lo demás, la sobrecarga de operadores en C++ se comporta como la sobrecarga de funciones.

Consejo El [alojamiento web tráfico ilimitado](https://www.ionos.es/alojamiento/espacio-web "Espacio web") de IONOS es ideal para hacer una copia de seguridad de tus proyectos de C++ en línea. El amplio almacenamiento en la web te ofrece, entre otras cosas, una cómoda instalación con un solo clic.

## Los operadores de C++ de un vistazo

### Operadores aritméticos

Algunos de los operadores aritméticos de C++ ya los conocemos desde la escuela. Operan sobre números y devuelven un nuevo número. Salvo dos excepciones (el más y el menos unarios, que puedes considerar como signos), los operadores aritméticos son todos operadores binarios.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`+`</td>
      <td>Suma / unario más</td>
      <td>`6 + 4`</td>
    </tr>
    <tr>
      <td>`-`</td>
      <td>Resta / menos unario</td>
      <td>`10 – 6`</td>
    </tr>
    <tr>
      <td>`*`</td>
      <td>Multiplicación</td>
      <td>`10*  3`</td>
    </tr>
    <tr>
      <td>`/`</td>
      <td>División de enteros</td>
      <td>`20 / 10`</td>
    </tr>
    <tr>
      <td>`%`</td>
      <td>Módulo (división con resto)</td>
      <td>`21 % 2`</td>
    </tr>
  </tbody>
</table>

### Operadores de asignación

Los valores se almacenan en variables en C++ como en la mayoría de los lenguajes de programación. Para asignar valores concretos a dichas variables, se necesitan operadores especiales.

#### Operadores de asignación simples

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`=`</td>
      <td>Asignación simple</td>
      <td>`x = 3`</td>
    </tr>
    <tr>
      <td>`++`</td>
      <td>Incremento</td>
      <td>`x++`</td>
    </tr>
    <tr>
      <td>`--`</td>
      <td>Disminución</td>
      <td>`x--`</td>
    </tr>
  </tbody>
</table>

#### Operadores de asignación combinados

Además de los operadores de asignación simples, C++ también admite operadores combinados. Se trata de operaciones aritméticas o a nivel de bits que se **combinan simultáneamente con una asignación de valor**:

```cpp
int  x = 4;
x += 2;
```

En el ejemplo de código anterior, a la variable “x” se le asigna el valor numérico 4 con una simple asignación. A continuación, se utiliza el operador combinado de asignación “+=” para realizar una suma aritmética y almacenar el valor resultante directamente en x. La asignación se escribiría así: “x = x + 2”.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`+=`</td>
      <td>Suma y asignación</td>
      <td>`x += 2`</td>
    </tr>
    <tr>
      <td>`-=`</td>
      <td>Resta y asignación</td>
      <td>`x -= 2`</td>
    </tr>
    <tr>
      <td>`*=`</td>
      <td>Multiplicación y asignación</td>
      <td>`x* = 2`</td>
    </tr>
    <tr>
      <td>`/=`</td>
      <td>División y asignación</td>
      <td>`x /= 2`</td>
    </tr>
    <tr>
      <td>`%=`</td>
      <td>Módulo y asignación</td>
      <td>`x %= 2`</td>
    </tr>
    <tr>
      <td>`&=`</td>
      <td>Asignación e “y” a nivel de bit</td>
      <td>`b &= 1`</td>
    </tr>
    <tr>
      <td>`<<=`</td>
      <td>Desplazamiento bit a bit a la izquierda y asignación</td>
      <td>`b <<= 1`</td>
    </tr>
    <tr>
      <td>`>>=`</td>
      <td>Desplazamiento bit a bit a la derecha y asignación</td>
      <td>`b >>= 1`</td>
    </tr>
    <tr>
      <td>`^=`</td>
      <td>Xor (exclusión) a nivel de bit y asignación</td>
      <td>`b ^= 1`</td>
    </tr>
    <tr>
      <td>`</td><td>=`</td>
      <td>Or (disyunción) a nivel de bits y asignación</td>
    </tr>
  </tbody>
</table>

### Operadores lógicos de C++

Puedes utilizar los operadores lógicos de C++ para hacer comparaciones proposicionales de dos expresiones. Los operadores lógicos son binarios, excepto el operador lógico de negación “!”, que siempre se refiere a una sola afirmación y niega su valor de verdad.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`&&`</td>
      <td>“Y” lógico</td>
      <td>`true && true`</td>
    </tr>
    <tr>
      <td>`</td><td></td><td>`</td>
    </tr>
    <tr>
      <td>`!`</td>
      <td>“No” lógico</td>
      <td>`!true`</td>
    </tr>
  </tbody>
</table>

### Operadores de comparación

Los operadores de comparación son operators C++ que examinan la relación de dos elementos. En consecuencia, son binarios. Excepto la comparación a tres bandas, que devuelve un número, el valor de retorno de todos los operadores de comparación de C++ es un valor de verdad.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`==`</td>
      <td>Igualdad</td>
      <td>`a == b`</td>
    </tr>
    <tr>
      <td>`!=`</td>
      <td>Desigualdad</td>
      <td>`a != b`</td>
    </tr>
    <tr>
      <td>`<=`</td>
      <td>Más pequeño o igual</td>
      <td>`a <= b`</td>
    </tr>
    <tr>
      <td>`>=`</td>
      <td>Mayor o igual</td>
      <td>`a >= b`</td>
    </tr>
    <tr>
      <td>`<`</td>
      <td>Más pequeño</td>
      <td>`a < b`</td>
    </tr>
    <tr>
      <td>`>`</td>
      <td>Más grande</td>
      <td>`a > b`</td>
    </tr>
    <tr>
      <td>`<=>`</td>
      <td>Comparación a tres bandas</td>
      <td>`a <=> b`</td>
    </tr>
  </tbody>
</table>

### Manipulación de bits

Para poder acceder a los bits individuales de forma eficiente y mejorar la velocidad de los programas, existen los operadores bit a bit de C++. Son especialmente importantes para la programación orientada al rendimiento.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`&amp;v </td><td>“Y” a nivel de bit </td><td>`a y b`</td></tr><tr><td>`</td>
      <td>`</td><td>“O” a nivel de bit </td></tr><tr><td>`^`</td><td>“Xo” a nivel de bit </td><td>`a ^ b`</td></tr><tr><td>`~`</td><td>Negación a nivel de bits </td><td>`~a`</td></tr><tr><td>`&lt;&lt;`</td><td>Cambio a la izquierda </td><td>`a &lt;&lt; b`</td></tr><tr><td>`&gt;&gt;`</td><td>Cambio a la derecha </td><td>`a &gt;&gt; b`</td>
    </tr>
  </tbody>
</table>

### Gestión de la memoria

C++ tiene aspectos cercanos al lenguaje máquina y te ofrece una serie de operadores que ayudan con la gestión de la memoria.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`&amp;v </td><td>Determinación de la dirección </td><td>`&amp;x`</td></tr><tr><td>`sizeof()`</td><td>Determina la necesidad de memoria de una expresión </td><td>`sizeof(x)`</td></tr><tr><td>`new`</td><td>Crea un nuevo objeto y devuelve el pointer </td><td>`object* pointer = new object()`</td></tr><tr><td>`delete`</td><td>Destruye un objeto </td><td>`delete object`</td>
    </tr>
  </tbody>
</table>

### Acceso a datos para objetos y pointers

Si quieres acceder a miembros individuales de objetos o a las áreas de memoria de los pointers, los siguientes operadores de C++ te ayudarán.

<table>
  <thead>
    <tr>
      <th><strong>Operador C++</strong></th>
      <th><strong>Significado</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`*`</td>
      <td>La desreferenciación de pointers proporciona un área de memoria</td>
      <td>`*pointer = 3;`</td>
    </tr>
    <tr>
      <td>`.`</td>
      <td>Acceso a miembros de un objeto</td>
      <td>`object.member = 2;`</td>
    </tr>
    <tr>
      <td>`-&gt;`</td>
      <td>Acceso a miembros de un objeto con un pointer</td>
      <td>`objectpointer->member = 2;`</td>
    </tr>
  </tbody>
</table>


This is a markdown version of: [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/c-operators/](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/c-operators/) for AI/LLM consumption.