Para evaluar expresiones en C++ contamos con una amplio conjunto de operadores, en esta etapa introductoria utilizaremos cuatro categorías generales:
- Operadores de Asignación.
- Operadores Aritméticos.
- Operadores relacionales..
- Operadores lógicos.
Si deseas revisar una relación completa de los operadores disponibles puedes revisar el anexo II, Operadores de C++
Operadores de Asignación
En este momento solo presento el principal operador de asignación por su amplio uso.
Operador | Descripción | Asociatividad |
= | Asignación | Derecha a izquierda |
Este operador asigna el valor de la expresión que se encuentra a la derecha del operador al lado izquierdo, normalmente a una variable.
El siguiente programa muestra como funciona el operador de asignación.
// operador_asignacion.cpp // Este programa muestra el uso del operador de asignación // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.tutorialspoint.com/compile_cpp_online.php #include <iostream> using namespace std; int main() { int a, b; char letra; bool respuesta; a = 5; b = 0; letra = 'P'; respuesta = true; cout << "a = " << a << " y b = " << b << endl; cout << "letra = " << letra << " respuesta = " << respuesta << endl; respuesta = b; //Equivalente a false (o) cout << "Asignación de una variable a otra variable = " << respuesta << endl; return 0; }
Operadores aritméticos
Operador | Nombre | Descripción | Asociatividad |
* | Multiplicación | Multiplicación aritmética | Izquierda a derecha |
/ | División | División aritmética | |
% | Módulo | Obtiene el residuo de la división entera | |
+ | Suma | Suma aritmética | |
– | Resta | Resta aritmética |
El siguiente programa muestra el uso de los operadores indicados en esta sección,
// operadores_aritmeticos.cpp // Este programa muestra el uso del operadores aritméticos // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.tutorialspoint.com/compile_cpp_online.php #include <iostream> using namespace std; int main() { int a = 5, b = 10, c = 3, resultado; cout << "Valor de a = " << a << " - Valor de b = " << b << " - Valor de c = " << c << "\n"; resultado = a + b; //Suma cout << "a + b = " << resultado << "\n"; resultado = a - b; //Resta cout << "a - b = " << resultado << "\n"; resultado = a * b; //Multiplicación cout << "a * b = " << resultado << "\n"; resultado = a / b; //División cout << "a / b = " << resultado << "\n"; resultado = a % b; //Módulo cout << "a % b = " << resultado << "\n"; resultado = a % c; //Módulo cout << "a % c = " << resultado << "\n"; return 0; }
Operadores de relacionales
Los operadores de comparación se caracterizan porque al evaluar una expresión generan un valor Booleano (bool), esto es, Verdadero o Falso, cabe señalar que internamente estos dos valores están definidos de esta forma:
int true = 1 //verdadero int false = 0 //falso
De modo que podemos utilizar tanto el nombre del identificador, como el valor numérico para identificar cualquiera de estas 2 condiciones. Gran parte de la potencia de un lenguaje se basa en la capacidad de utilizar operadores relacionales y de los operadores a nivel bit.
Operadores Lógicos
Los operadores lógicos modifican el valor de la expresión evaluada de acuerdo a las tablas de verdad de Boole, las 3 operaciones implementadas de forma nativa son:
- Negación
- Y lógico
- O lógico
Tablas de verdad, and, or y not
Tabla AND | ||
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
Verdadero | Verdadero | Verdadero |
Verdadero | Falso | Falso |
Falso | Verdadero | Falso |
Falso | Falso | Falso |
Tabla OR | ||
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
Verdadero | Verdadero | Verdadero |
Verdadero | Falso | Verdadero |
Falso | Verdadero | Verdadero |
Falso | Falso | Falso |
Tabla Not | |
Expresión 1 | Resultado |
---|---|
Verdadero | Falso |
Falso | Verdadero |
Los operadores relacionales y lógicos implementados en C++ son:
Operadores relacionales | ||
Operador | Nombre | Sintaxis |
---|---|---|
< | Menor que | expresión < expresión |
<= | Menor o igual que | expresión <= expresión |
> | Mayor que | expresión > expresión |
>= | Mayor o igual que | expresión >= expresión |
!= | Diferente de | expresión != expresión |
== | Igual que | expresión == expresión |
! | Negación lógica | !expresión |
&& | AND lógico | expresión && expresión |
|| | OR lógico | expresión || expresión |
El resultado de una expresión siempre generará un resultado, podemos utilizarlo directamente en una expresión válida o almacenarlo en una variable para su uso posterior. El siguiente ejemplo muestra lo indicado.
//operador_relacional_logico.cpp //El resultado de una expresión siempre generará un resultado, podemos //utilizarlo directamente en una expresión válida o almacenarlo en una //variable para su uso posterior. // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.tutorialspoint.com/compile_cpp_online.php #include <iostream> using namespace std; int main() { int a = 5; int b = 8; bool r; //Evaluación directa de identificadores: //Nota: Cuando evalúas la expresión directamente en una expresión //debes encerarla entre paréntesis para que no aparezcan errores. cout << "Comparación \"menor que\" 5 < 8 = " << (5 < 8) << endl; cout << "Comparación \"mayor que\" 5 > 8 = " << (5 > 8) << endl; cout << "Comparación \"menor o igual que\" 5 <= 8 = " << (5 <= 8) << endl; cout << "Comparación \"mayor o igual que\" 5 >= 8 = " << (5 >= 8) << endl; cout << "Comparación \"diferente que\" 5 != 8 = " << (5 != 8) << endl; cout << "Comparación \"igual que\" 5 == 8 = " << (5 == 8) << endl; //Es preferible evaluar las expresiones fuera de las cadenas cout << "\n\nPara la siguiente sección tenemos a = " << a << " y b = " << b << endl; r = a < b; cout << "Comparación \"menor que\" a < b = " << r << endl; r = a > b; cout << "Comparación \"mayor que\" a > b = " << r << endl; //Evaluación de expresiones lógicas cout << "\n\n"; //2 saltos de línea cout << "\n\nPara la siguiente sección tenemos a = " << a << " y b = " << b << endl; r = (a > b) and (a < b); cout << "(a > b) \"and\" (a > b) = " << r << endl; r = (a > b) or (a < b); cout << "(a > b) \"or\" (a > b) = " << r << endl; r = not (a > b); cout << "\"not\" (a > b) = " << r << endl; //¡¡NOTA LA DIFERENCIA CON LA SENTENCIA ANTERIOR!! r = not a > b; cout << "\"not\" a > b = " << r << endl; return 0; }
Nota que en el último grupo de sentencias las expresiones se agruparon con paréntesis las expresiones principales. Al igual que en álgebra, existen ciertas consideraciones que debemos conocer al momento de evaluar expresiones, estas reglas son las reglas de precedencia, que revisaremos en la siguiente entrega.
En este momento solo mencionaré que para forzar que una expresión se evalúe de la forma que queremos debemos utilizar los paréntesis, la importancia de los paréntesis se muestra en las 2 últimas evaluaciones:
r = not (a > b); r = not a > b;
En la salida del programa, podrás darte cuenta que el resultado es diferente por la presencia o ausencia de los paréntesis.
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx
Referencias
- Por Roberto C. González para Ethical Hack
Fuente Imágenes
- «Todas las imágenes de esta sección»: by Nala Systems
Tutorial de C++ by eHack
- Volver al índice de temas del Tutorial de C++
- *** Durante todo este tutorial se repetirá: Este es un curso orientado a gente que nunca ha programado, incluso a gente ajena a la informática. Por esta razón el desarrollo puede parecer lento en ciertas etapas. Prefiero ser claro paso a paso, que hacer «pasos mágicos» como suele ocurrir cuando se enseña programación. *** También es buena idea leas esta entrada si te preguntas «Por qué C++»
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Operadores: Asignación, Aritméticos, Relacionales y Lógicos, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.