C++ Operadores

Un operador es un símbolo que le indica al compilador que realice operaciones matemáticas o lógicas específicas. C++ incorpora operadores ricos y proporciona los siguientes tipos de operadores:

  • Operadores aritméticos
  • Operadores relacionales
  • Operadores lógicos
  • Operadores de bits
  • Operadores de asignación
  • Operadores misceláneos

Este capítulo presentará uno por uno los operadores aritméticos, relacionales, lógicos, de bits, de asignación y otros operadores.

Operadores aritméticos

La siguiente tabla muestra los operadores aritméticos admitidos por C++.

Supongamos que el valor de la variable A es 10 y el valor de la variable B es 20, entonces:

OperadorDescripciónEjemplo
+Suma los dos operandosA + B dará 30
-Resta el segundo operando del primer operandoA - B dará -10
*Multiplica los dos operandosA * B dará 200
/Divide el numerador por el denominadorB / A dará 2
%Operador de módulo, el resto después de la división enteraB % A dará 0
++Operador de incremento, aumenta el valor entero en 1A++ dará 11
--Operador de decremento, disminuye el valor entero en 1A-- dará 9

Ejemplo

Vea el siguiente ejemplo para conocer los operadores aritméticos disponibles en C++.

Copie y pegue el siguiente programa de C++ en el archivo test.cpp, compile y ejecute el programa.

Ejemplo

#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c; c = a + b; cout << "Línea 1 - el valor de c es" << c << endl ; c = a - b; cout << "Línea 2 - el valor de c es" << c << endl ; c = a * b; cout << "Línea 3 - el valor de c es" << c << endl ; c = a / b; cout << "Línea 4 - el valor de c es" << c << endl ; c = a % b; cout << "Línea 5 - el valor de c es" << c << endl ; int d = 10; // Probar incremento y decremento c = d++; cout << "Línea 6 - el valor de c es" << c << endl ; d = 10; // Reasignar c = d--; cout << "Línea 7 - el valor de c es" << c << endl ; return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 10
Line 7 - c 的值是 10

Operadores relacionales

La siguiente tabla muestra los operadores relacionales admitidos por C++.

Supongamos que el valor de la variable A es 10 y el valor de la variable B es 20, entonces:

OperadorDescripciónEjemplo
==Comprueba si los valores de dos operandos son iguales; si son iguales, la condición es verdadera.(A == B) no es verdadero.
!=Comprueba si los valores de dos operandos son iguales; si no son iguales, la condición es verdadera.(A != B) es verdadero.
>Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho; si es así, la condición es verdadera.(A > B) no es verdadero.
<Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho; si es así, la condición es verdadera.(A < B) es verdadero.
>=Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho; si es así, la condición es verdadera.(A >= B) no es verdadero.
<=Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho; si es así, la condición es verdadera.(A <= B) es verdadero.

Ejemplo

Vea el siguiente ejemplo para conocer los operadores relacionales disponibles en C++.

Copie y pegue el siguiente programa de C++ en el archivo test.cpp, compile y ejecute el programa.

Ejemplo

#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c ; if( a == b ) { cout << "Línea 1 - a es igual a b" << endl ; } else { cout << "Línea 1 - a no es igual a b" << endl ; } if ( a < b ) { cout << "Línea 2 - a es menor que b" << endl ; } else { cout << "Línea 2 - a no es menor que b" << endl ; } if ( a > b ) { cout << "Línea 3 - a es mayor que b" << endl ; } else { cout << "Línea 3 - a no es mayor que b" << endl ; } /*Cambiar los valores de a y b*/ a = 5; b = 20; if ( a <= b ) { cout << "Línea 4 - a es menor o igual que b" << endl ; } if ( b >= a ) { cout << "Línea 5 - b es mayor o igual que a" << endl ; } return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Line 1 - a 不等于 b
Line 2 - a 不小于 b
Line 3 - a 大于 b
Line 4 - a 小于或等于 b
Line 5 - b 大于或等于 a

Operadores lógicos

La siguiente tabla muestra los operadores lógicos relacionales admitidos por C++.

Supongamos que el valor de la variable A es 1 y el valor de la variable B es 0, entonces:

OperadorDescripciónEjemplo
&&Se llama operador lógico Y (AND). Si ambos operandos son true, la condición es true.(A && B) es false.
||Se llama operador lógico O (OR). Si cualquiera de los dos operandos es true, la condición es true.(A || B) es true.
!Se llama operador lógico de negación (NOT). Se usa para invertir el estado lógico del operando. Si la condición es true, el operador de negación la convierte en false.!(A && B) es true.

Ejemplo

Vea el siguiente ejemplo para conocer los operadores lógicos disponibles en C++.

Copie y pegue el siguiente programa de C++ en el archivo test.cpp, compile y ejecute el programa.

Ejemplo

#include <iostream> using namespace std; int main() { int a = 5; int b = 20; int c ; if ( a && b ) { cout << "Línea 1 - la condición es verdadera"<< endl ; } if ( a || b ) { cout << "Línea 2 - la condición es verdadera"<< endl ; } /*Cambiar los valores de a y b*/ a = 0; b = 10; if ( a && b ) { cout << "Línea 3 - la condición es verdadera"<< endl ; } else { cout << "Línea 4 - la condición no es verdadera"<< endl ; } if ( !(a && b) ) { cout << "Línea 5 - la condición es verdadera"<< endl ; } return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Line 1 - 条件为真
Line 2 - 条件为真
Line 4 - 条件不为真
Line 5 - 条件为真

Operadores de bits

Los operadores de bits actúan sobre los bits y realizan operaciones bit a bit. La tabla de verdad de &, | y ^ es la siguiente:

pqp & qp | qp ^ q
00000
01011
11110
10011

Supongamos que si A = 60 y B = 13, ahora en formato binario se representan de la siguiente manera:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

La siguiente tabla muestra los operadores de bits admitidos por C++. Supongamos que el valor de la variable A es 60 y el valor de la variable B es 13, entonces:

OperadorDescripciónEjemplo
&

Operación Y (AND) a nivel de bits, realiza la operación "Y" según los bits binarios. Regla de operación:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
(A & B) dará 12, es decir, 0000 1100
|

Operador O (OR) a nivel de bits, realiza la operación "O" según los bits binarios. Regla de operación:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) dará 61, es decir, 0011 1101
^

Operador XOR (O exclusivo) a nivel de bits, realiza la operación "XOR" según los bits binarios. Regla de operación:

0^0=0;   
0^1=1;   
1^0=1;  
1^1=0;
(A ^ B) dará 49, es decir, 0011 0001
~

Operador de complemento (NOT) a nivel de bits, realiza la operación "complemento" según los bits binarios. Regla de operación:

~1=-2;   
~0=-1;
(~A) dará -61, es decir, 1100 0011, en forma de complemento a dos de un número binario con signo.
<<Operador de desplazamiento a la izquierda binario. Desplaza todos los bits binarios de un operando hacia la izquierda una cierta cantidad (los bits binarios de la izquierda se descartan y la derecha se rellena con 0).A << 2 dará 240, es decir, 1111 0000
>>Operador de desplazamiento a la derecha binario. Desplaza todos los bits binarios de un número hacia la derecha una cierta cantidad; para números positivos se rellena con 0 a la izquierda, para números negativos se rellena con 1 a la izquierda, y los bits de la derecha se descartan.A >> 2 dará 15, es decir, 0000 1111

Ejemplo

Vea el siguiente ejemplo para conocer los operadores de bits disponibles en C++.

Copie y pegue el siguiente programa de C++ en el archivo test.cpp, compile y ejecute el programa.

Ejemplo

#include <iostream> using namespace std; int main() { unsigned int a = 60; // 60 = 0011 1100 unsigned int b = 13; // 13 = 0000 1101 int c = 0; c = a & b; // 12 = 0000 1100 cout << "Línea 1 - el valor de c es" << c << endl ; c = a | b; // 61 = 0011 1101 cout << "Línea 2 - el valor de c es" << c << endl ; c = a ^ b; // 49 = 0011 0001 cout << "Línea 3 - el valor de c es" << c << endl ; c = ~a; // -61 = 1100 0011 cout << "Línea 4 - el valor de c es" << c << endl ; c = a << 2; // 240 = 1111 0000 cout << "Línea 5 - el valor de c es" << c << endl ; c = a >> 2; // 15 = 0000 1111 cout << "Línea 6 - el valor de c es" << c << endl ; return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15

Operadores de asignación

La siguiente tabla enumera los operadores de asignación admitidos por C++:

OperadorDescripciónEjemplo
=Operador de asignación simple: asigna el valor del operando derecho al operando izquierdo.C = A + B asignará el valor de A + B a C.
+=Operador de suma y asignación: asigna al operando izquierdo el resultado de sumar el operando derecho al operando izquierdo.C += A es equivalente a C = C + A.
-=Operador de resta y asignación: asigna al operando izquierdo el resultado de restar el operando derecho del operando izquierdo.C -= A es equivalente a C = C - A.
*=Operador de multiplicación y asignación: asigna al operando izquierdo el resultado de multiplicar el operando derecho por el operando izquierdo.C *= A es equivalente a C = C * A.
/=Operador de división y asignación: asigna al operando izquierdo el resultado de dividir el operando izquierdo entre el operando derecho.C /= A es equivalente a C = C / A.
%=Operador de módulo y asignación: asigna al operando izquierdo el módulo de los dos operandos.C %= A es equivalente a C = C % A.
<<=Operador de desplazamiento a la izquierda y asignaciónC <<= 2 es equivalente a C = C << 2.
>>=Operador de desplazamiento a la derecha y asignaciónC >>= 2 es equivalente a C = C >> 2.
&=Operador de AND de bits y asignaciónC &= 2 es equivalente a C = C & 2.
^=Operador de XOR de bits y asignaciónC ^= 2 es equivalente a C = C ^ 2.
|=Operador de OR de bits y asignaciónC |= 2 es equivalente a C = C | 2.

Ejemplo

Vea el siguiente ejemplo para comprender los operadores de asignación disponibles en C++.

Copie y pegue el siguiente programa de C++ en el archivo test.cpp, compílelo y ejecútelo.

Ejemplo

#include <iostream> using namespace std; int main() { int a = 21; int c ; c = a; cout << "Línea 1 - Ejemplo del operador =, valor de c = :" <<c<< endl ; c += a; cout << "Línea 2 - Ejemplo del operador +=, valor de c = :" <<c<< endl ; c -= a; cout << "Línea 3 - Ejemplo del operador -=, valor de c = :" <<c<< endl ; c *= a; cout << "Línea 4 - Ejemplo del operador *=, valor de c = :" <<c<< endl ; c /= a; cout << "Línea 5 - Ejemplo del operador /=, valor de c = :" <<c<< endl ; c = 200; c %= a; cout << "Línea 6 - Ejemplo del operador %=, valor de c = :" <<c<< endl ; c <<= 2; cout << "Línea 7 - Ejemplo del operador <<=, valor de c = :" <<c<< endl ; c >>= 2; cout << "Línea 8 - Ejemplo del operador >>=, valor de c = :" <<c<< endl ; c &= 2; cout << "Línea 9 - Ejemplo del operador &=, valor de c = :" <<c<< endl ; c ^= 2; cout << "Línea 10 - Ejemplo del operador ^=, valor de c = :" <<c<< endl ; c |= 2; cout << "Línea 11 - Ejemplo del operador |=, valor de c = :" <<c<< endl ; return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Line 1 - =  运算符实例,c 的值 = 21
Line 2 - += 运算符实例,c 的值 = 42
Line 3 - -= 运算符实例,c 的值 = 21
Line 4 - *= 运算符实例,c 的值 = 441
Line 5 - /= 运算符实例,c 的值 = 21
Line 6 - %= 运算符实例,c 的值 = 11
Line 7 - <<= 运算符实例,c 的值 = 44
Line 8 - >>= 运算符实例,c 的值 = 11
Line 9 - &= 运算符实例,c 的值 = 2
Line 10 - ^= 运算符实例,c 的值 = 0
Line 11 - |= 运算符实例,c 的值 = 2

Operadores misceláneos

La siguiente tabla enumera algunos otros operadores importantes admitidos por C++:

OperadorDescripción
sizeofOperador sizeofDevuelve el tamaño de una variable. Por ejemplo, sizeof(a) devolverá 4, donde a es un entero.
Condition ? X : YOperador condicionalSi Condition es verdadero ? entonces el valor es X : de lo contrario el valor es Y.
,Operador comaEjecuta una serie de operaciones en secuencia. El valor de toda la expresión coma es el valor de la última expresión en la lista separada por comas.
. (punto) y -> (flecha)Operador de acceso a miembrosSe utiliza para referirse a los miembros de clases, estructuras y uniones.
CastOperador de conversión de tiposConvierte un tipo de datos a otro. Por ejemplo, int(2.2000) devolverá 2.
&Operador de puntero &Devuelve la dirección de una variable. Por ejemplo, &a; dará la dirección real de la variable.
*Operador de puntero *Apunta a una variable. Por ejemplo, *var; apuntará a la variable var.

Precedencia de operadores en C++

La precedencia de operadores determina la agrupación de los términos en una expresión. Esto afecta la forma en que se evalúa una expresión. Algunos operadores tienen mayor precedencia que otros; por ejemplo, los operadores de multiplicación y división tienen mayor precedencia que los operadores de suma y resta.

Por ejemplo, x = 7 + 3 * 2; aquí, a x se le asigna 13, no 20, porque el operador * tiene mayor precedencia que +, por lo que primero se calcula la multiplicación 3*2 y luego se suma 7.

La siguiente tabla enumera los operadores de mayor a menor precedencia. Los operadores con mayor precedencia aparecen en la parte superior de la tabla y los de menor precedencia en la parte inferior. En una expresión, los operadores con mayor precedencia se evalúan primero.

Categoría OperadorAsociatividad
Sufijo() [] -> . ++ - -   de izquierda a derecha
Unario + - ! ~ ++ - - (type)* & sizeof  de derecha a izquierda
Multiplicación/División * / % de izquierda a derecha
Suma/Resta+ -  de izquierda a derecha
Desplazamiento << >>  de izquierda a derecha
Relacional< <= > >=  de izquierda a derecha
Igualdad == !=  de izquierda a derecha
AND de bits&  de izquierda a derecha
XOR de bits ^  de izquierda a derecha
OR de bits |  de izquierda a derecha
AND lógico&&  de izquierda a derecha
OR lógico ||  de izquierda a derecha
Condicional?:  de derecha a izquierda
Asignación = += -= *= /= %=>>= <<= &= ^= |= de derecha a izquierda
Coma ,  de izquierda a derecha

Ejemplo

Vea el siguiente ejemplo para comprender la precedencia de operadores en C++.

Copie y pegue el siguiente programa de C++ en el archivo test.cpp, compílelo y ejecútelo.

Compare la diferencia entre tener paréntesis y no tenerlos; esto producirá resultados diferentes. Debido a que (), /, * y + tienen diferentes precedencias, los operadores con mayor precedencia se calcularán primero.

Ejemplo

#include <iostream> using namespace std; int main() { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 cout << "El valor de (a + b) * c / d es" << e << endl ; e = ((a + b) * c) / d; // (30 * 15 ) / 5 cout << "El valor de ((a + b) * c) / d es" << e << endl ; e = (a + b) * (c / d); // (30) * (15/5) cout << "El valor de (a + b) * (c / d) es" << e << endl ; e = a + (b * c) / d; // 20 + (150/5) cout << "El valor de a + (b * c) / d es" << e << endl ; return 0; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

(a + b) * c / d 的值是 90
((a + b) * c) / d 的值是 90
(a + b) * (c / d) 的值是 90
a + (b * c) / d 的值是 50
Otras extensiones