c operators types
Un estudio completo de operadores en C ++ con ejemplos:
En esto Serie de formación intensiva en C ++, aprendimos sobre los diversos conceptos en C ++ como variables, clases de almacenamiento, calificadores de tipo, etc. en nuestros tutoriales anteriores. También llegamos a saber cómo podemos modificar estas variables.
Para hacer estas modificaciones, necesitamos realizar operaciones en estas variables y constantes y para realizar estas operaciones hacemos uso de operadores.
Los operadores son símbolos que actúan sobre variables u otras entidades que se denominan operandos y realizan operaciones matemáticas o lógicas para modificar sus valores y producir resultados en consecuencia.
Lo que vas a aprender:
Operadores en C ++
Los operadores forman la base básica de cualquier lenguaje de programación. Sin operadores, no podemos modificar o manipular las entidades de los lenguajes de programación y, por lo tanto, no podemos producir los resultados deseados. C ++ es muy rico en operadores integrados que discutiremos en detalle en este tutorial.
En C ++, la mayoría de los operadores son operadores binarios, es decir, estos operadores requieren dos operandos para realizar una operación. Pocos operadores como el operador ++ (incremento) son el operador unario, lo que significa que operan en un solo operando.
También hay un operador ternario en C ++ llamado Operador condicional que toma tres operandos. Aprenderemos sobre esto en detalle en la parte posterior del tutorial.
Tipos de operadores en C ++
Los operadores en C ++ se clasifican como se muestra a continuación:
¡Exploremos cada tipo de operador C ++ en detalle!
Operadores aritméticos
Los operadores aritméticos se utilizan para realizar operaciones matemáticas básicas en operandos.
C ++ admite las siguientes operaciones aritméticas:
Operador | Binario / unario | Descripción |
---|---|---|
-- | Unario | Operador de disminución: disminuye el valor del operando en 1 |
+ | Binario | Adición de dos operandos |
- | Binario | Resta de dos operandos |
* | Binario | Multiplicación de dos operandos |
/ | Binario | División de dos operandos |
% | Binario | Operador de módulo: el resultado es el resto de la división |
++ | Unario | Operador de incremento: aumenta el valor del operando en 1 |
El siguiente ejemplo demuestra los primeros cinco operadores aritméticos en C ++
|_+_|Producción:
Los operandos son op1 = 3 op2 = 4 op3 = 10.1 op4 = 5.4
op1 + op2 = 7
op1 - op2 = -1
op3 * op4 = 54.54
op3 / op4 = 1.87037
op2% op1 = 1
El programa define operandos primero y luego realiza operaciones aritméticas en estos operandos. Este programa demuestra el uso de operadores aritméticos en C ++.
Los siguientes operadores aritméticos que vamos a discutir son ++ y -. Estos se denominan operadores de incremento y decremento respectivamente. El operador de incremento aumenta el valor del operando en 1, mientras que el operador de disminución disminuye el valor del operando en 1.
La expresión x ++ es equivalente a
x+=1;
x = x + 1;
De manera similar, la expresión x — es equivalente a
x -=1;
x = x-1;
Los operadores de incremento y decremento se pueden colocar como prefijo y como sufijo del operando. Dependiendo de su ubicación, estos operadores tienen un significado diferente para la evaluación de una expresión.
Cuando se coloca como un prefijo, la operación de incremento / decremento se conoce como pre-incremento o pre-decremento respectivamente. Cuando se coloca como sufijo, la operación de incremento / decremento se llama operación de incremento o decremento posterior, respectivamente.
Siempre que estén involucradas expresiones, en caso de pre-incremento o pre-decremento, la operación (incremento o decremento) se lleva a cabo primero y luego se realiza la asignación. En el caso de post-incremento o post-decremento, la asignación se realiza primero y la operación se lleva a cabo después.
Podemos entender esto mejor usando el siguiente ejemplo.
|_+_|Producción:
PreIncremento: Valor de x = 5
PreIncrement:Value of y = 5
PostDecrement: Valor de x = 4
PostDecrement:Value of y = 5
Este es el programa para demostrar los operadores de incremento y decremento. Tenga en cuenta que hemos utilizado operadores de preincremento y post-decremento en este programa. Para la primera expresión, y = ++ x, ya que se trata de un preincremento, primero se incrementará x y luego el valor resultante se asignará a y. Esto es evidente por el resultado que hemos obtenido.
En la segunda expresión y = x–, el valor de x, que ahora es 5, se asignará primero a y y luego se reducirá el valor de x. Por lo tanto, en la salida, podemos ver que para la operación de decremento posterior, el valor de y es 5 mientras que x es 4.
Operadores logicos
Los operadores lógicos se utilizan para evaluar una combinación de condiciones / restricciones para obtener un valor resultante. El resultado de la evaluación de una expresión booleana es booleano, que es verdadero o falso.
C ++ admite los siguientes operadores lógicos:
Operador | Descripción | |
---|---|---|
7 L-> R | << >> | Desplazamiento bit a la izquierda Desplazamiento bit a bit a la derecha |
&& | AND lógico: devuelve verdadero si ambas condiciones son verdaderas; de lo contrario, devuelve falso. | |
|| | OR lógico: devuelve verdadero si una de las condiciones es verdadera. Devuelve falso cuando ambas condiciones son falsas. | |
! | NOT lógico: niega la condición. |
C ++ emplea un método de cortocircuito para evaluar expresiones lógicas. En esto, C ++ tiene que evaluar solo la primera expresión / operando de la expresión lógica para proporcionar el resultado. Por ejemplo, para el operador lógico AND (&&), C ++ evalúa solo la primera expresión. Si es falso, el resultado será falso incluso si la segunda condición es verdadera.
De manera similar, para OR lógico (||), evalúa solo la primera expresión. Si la primera expresión es verdadera, entonces el resultado será verdadero, por lo que no es necesario evaluar la segunda expresión.
A continuación se muestra un ejemplo que muestra el uso de operadores lógicos.
|_+_|Producción:
a no es cero
Y lógico es cierto
La OR lógica es verdadera
En el programa anterior, hemos hecho uso de los tres operadores lógicos para evaluar expresiones e imprimir los resultados.
Operadores relacionales
Los operadores relacionales o de comparación se utilizan para comparar dos operandos. El resultado de la evaluación es verdadero o falso.
C ++ admite los siguientes operadores relacionales:
Operador | Descripción |
---|---|
!¡ERROR! operador inesperado '=' | Evalúa si dos operandos son iguales. Devuelve verdadero si es igual de lo contrario devuelve falso. |
! = (no es igual a) | Complementa al operador 'igual a'. Devuelve verdadero si los operandos no son iguales. Falso de lo contrario. |
<(less than) | Devuelve verdadero si el primer operando es menor que el segundo. Falso de lo contrario. |
<=(less than equal to) | Devuelve verdadero si el primer operando es menor o igual que el segundo operando. Falso de lo contrario. |
> (mayor que) | Devuelve verdadero si el primer operando es mayor que el segundo. Falso de lo contrario. |
> = (mayor que igual a) | Devuelve verdadero si el primer operando es mayor que igual al segundo. Falso de lo contrario. |
Consulte el programa de ejemplo a continuación para comprender los operadores relacionales.
|_+_|Producción:
a no es igual ab
c no es igual ad
(a + b) menor que / igual a (c + d)
(a-b) mayor que / igual a (d-c)
En el programa anterior, vemos el uso de operadores relacionales y la forma en que evalúan las expresiones proporcionadas.
Tenga en cuenta que podemos proporcionar no solo valores, sino también variables y expresiones en las declaraciones condicionales.
Operadores bit a bit
Los operadores bit a bit en C ++ operan en bits de los operandos proporcionados. Los operadores bit a bit se aplican solo a tipos integrales como integer, character, etc., y no a tipos de datos como float, double, etc.
A continuación se muestran los operadores bit a bit admitidos por C ++:
Operadores | Descripción |
---|---|
& (Y binario) | Realiza la operación AND en los bits del operando 1 y el operando 2. |
| (OR binario) | Realiza la operación OR en los bits del operando 1 y el operando 2. |
^ (XOR binario) | Realiza la operación XOR en los bits del operando 1 y el operando 2. |
~ (Complemento de uno binario) | Toma un operando e invierte sus bits. |
<<( Binary left shift operator) | Desplaza los bits del primer operando a la izquierda a un número de bits especificado por el segundo operando. |
>> (Operador de desplazamiento a la derecha binario) | Desplaza los bits del primer operando a la derecha a un número de lugares especificados por el segundo operando. |
Estos operadores bit a bit operan en operandos bit a bit. Las tablas de verdad para las operaciones AND, OR y XOR se proporcionan a continuación.
Considere ayb como dos bits en los que se van a realizar las operaciones AND, OR y XOR.
Las tablas de verdad para el mismo son las que se indican a continuación:
a | b | a & b | a | b | a ^ b |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Tomemos un ejemplo para comprender las operaciones bit a bit.
Sea a = 8 y b = 4
La representación binaria de ayb es la siguiente:
a=8 1000
a=4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
En el ejemplo anterior, vemos que el AND bit a bit de 8 y 4 es 0. El OR bit a bit de 8 y 4 es 12 y el XOR bit a bit de 8 y 4 también es 12.
Esta es la forma en que los operadores bit a bit realizan las operaciones bit a bit.
Un ejemplo que demuestra los operadores bit a bit.
|_+_|Producción:
Resultado de &: 0
Resultado de | : 12
Resultado de ^: 12
Consecuencia de<< by 2 bits: 32
Resultado de >> por 2 bits: 1
Resultado de ~: -4
En el programa anterior, demostramos el uso de operadores bit a bit y también imprimimos la salida de cada una de las operaciones.
Operadores de Asignación
El operador de asignación '=' se utiliza para asignar un valor a una variable. El LHS del operador de asignación es una variable y RHS es el valor que se asignará a la variable. El valor del lado derecho debe ser del mismo tipo que el de la variable del lado izquierdo.
Tenga en cuenta la diferencia entre los operadores '=' y '=='. El primero es el operador de asignación y el último es el operador de igualdad.
La operación de asignación se realiza de derecha a izquierda. Aparte del operador de asignación '=', existen otras variaciones del operador de asignación que se conocen como 'operadores de asignación compuesta'. Estos operadores realizan una operación además de la asignación.
La siguiente tabla nos da una descripción de estos operadores de asignación.
Operador | Descripción |
---|---|
= | Asigna el valor del operando RHS al operando LHS |
+= | Agrega el operando RHS al operando LHS y asigna el resultado en el operando LHS. |
-= | Resta el operando RHS al operando LHS y asigna el resultado al operando LHS |
*= | multiplica el operando RHS por el operando LHS y asigna el resultado al operando LHS |
/= | divide el operando RHS en el operando LHS y asigna el resultado al operando LHS |
Como se muestra en la tabla anterior, si xey son operandos, x + = y es equivalente ax = x + y.
Similar,
x - = y es equivalente ax = x-y.
x * = y es equivalente ax = x * y.
x / = y es equivalente ax = x / y.
El siguiente ejemplo de programación demuestra estos operadores de asignación.
|_+_|Producción:
Ingrese la variable de entrada y: 4
Valor de x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1
En el ejemplo anterior, hemos demostrado la asignación y los operadores de asignación compuesta.
Nota: También podemos combinar los otros operadores binarios como%,<>, &, |, ^, etc. en sentencias de asignación compuesta además de las que ya se han demostrado.
Otros operadores
Hasta ahora exploramos todos los operadores principales en C ++. Hay algunos operadores de C ++ adicionales que necesitan nuestra atención.
Estos operadores incluyen:
aplicación de tarjeta de tiempo libre para android
(i) tamaño del operador
sizeof es un operador unario que se usa ampliamente en C y C ++. Sizeof devuelve el tamaño de su operando. El valor de retorno suele ser un tipo integral sin firmar denotado por 'size_t'.
El operador Sizeof tiene muchos usos en los lenguajes C y C ++. Se puede utilizar para conocer el tamaño de las variables, matrices o expresiones e incluso para asignar los bloques de memoria.
(ii) Operador ternario condicional
El operador condicional en C ++ se puede usar como reemplazo de la instrucción if-else.
La sintaxis general del operador condicional es:
¿Condición? expresión1: expresión2;
Si la condición es verdadera, se evaluará la expresión 1. Si la condición es falsa, se evaluará la expresión2.
Tenga en cuenta que expression1 y expression2 deben ser del mismo tipo de datos para evitar posibles errores.
Lectura sugerida => Operador ternario en C #
(iii) Operador de coma
El operador de coma que se representa como un token ',' se puede utilizar como operador y como separador.
Como operador, se usa una coma cuando hay más de una expresión para evaluar. Solo la expresión más a la derecha se asigna a LHS.
Por ejemplo,considere la siguiente expresión.
x = (y=4, y+1);
En esta expresión, tenemos dos expresiones en el lado derecho separadas por una coma. Aquí la coma actúa como operador. Primero, se evaluará la expresión, y = 4. Luego, la siguiente expresión y + 1 se evaluará utilizando el resultado de la primera expresión, es decir, y = 4. Por tanto, el valor de y + 1 será 5 y este valor se asignará ax.
Como separador, se puede usar una coma en cualquier lugar para separar definiciones, lista de parámetros, etc.
(iv) Operador de acceso a miembros
Hay dos operadores que se utilizan para acceder a los miembros individuales de clases, estructuras o uniones en C ++. Estos son el operador de punto (.) Y el operador de flecha (->). Aprenderemos estos operadores en detalle cuando aprendamos programación orientada a objetos en C ++.
El siguiente ejemplo demuestra el uso de sizeof, Comma y Conditional Operator.
|_+_|Producción:
Valor de x = 7
La variable x es mayor que 5
tamaño de (x): 4 tamaño de (y): 4
La captura de pantalla del mismo se muestra a continuación.
Como se muestra en el programa anterior, primero tenemos dos variables declaradas y separadas por una coma. (coma como separador). A continuación, tenemos un operador de coma con dos expresiones. Como podemos ver en la salida, el valor de la expresión más a la derecha se asigna a la variable x. A continuación, demostramos el operador condicional para evaluar si x es menor que 5.
Finalmente, demostramos el uso del operador sizeof. Aquí usamos el operador sizeof para obtener el tamaño de las variables xey. Como ambas son variables enteras, el tamaño devuelto es de 4 bytes.
(v) Asociatividad y precedencia del operador
Ya hemos visto casi todos los operadores de C ++ y sabemos que se pueden usar en expresiones para realizar operaciones específicas. Pero las expresiones que hemos visto en los ejemplos son simples y directas. Sin embargo, dependiendo de nuestros requisitos, las expresiones tienden a volverse cada vez más complejas.
Dichas expresiones complejas tendrán más de un operador y muchos operandos. En tal situación, necesitamos evaluar qué operador se evaluará primero.
Por ejemplo, considere la siguiente expresión.
x = 4 + 5 / 3;
Aquí tenemos los operadores + y / y debemos decidir qué expresión se evaluará primero. En términos matemáticos, sabemos que la división se realizará antes que la suma. Por tanto, la expresión se convertirá en x = 4 + (5/3) = 5.
Pero cuando el compilador se enfrenta a tal situación, también necesitamos tener un mecanismo similar para decidir el orden de las operaciones, de modo que pueda evaluar correctamente la expresión.
Este orden en el que se evalúan los operadores de una expresión compuesta se denomina 'precedencia' del operador. C ++ ha definido precedencia para todos los operadores y los operadores con mayor precedencia se evalúan primero.
¿Qué sucede cuando tenemos dos operadores uno al lado del otro en una expresión con la misma precedencia? Aquí es donde entra en juego la asociatividad de un operador.
La asociatividad le dice al compilador si evaluar una expresión en secuencia de izquierda a derecha o de derecha a izquierda. Por lo tanto, usando la precedencia y la asociatividad de un operador, podemos evaluar una expresión de manera efectiva y obtener el resultado deseado.
C ++ proporciona una tabla que consta de la precedencia y la asociatividad de varios operadores que utiliza.
Esta tabla se proporciona a continuación.
Precedencia / Asociatividad | Operador | Descripción |
---|---|---|
1 Ninguno | :: :: | Operador de resolución de alcance (unario) (binario) |
2 L-> R | () () () {} escribe() escribe{} [] . -> ++ –– typeid const_cast Dynamic_cast reinterpret_cast static_cast | Paréntesis Llamada de función Inicialización Inicialización uniforme (C ++ 11) Reparto funcional Reparto funcional (C ++ 11) Subíndice de matriz Acceso de miembros desde el objeto Acceso de miembros desde el objeto ptr Post-incremento Post-decremento Información del tipo de tiempo de ejecución Desechar constante Conversión con verificación de tipo en tiempo de ejecución Conversión de un tipo a otro Conversión de tipo comprobado en tiempo de compilación |
3 R-> L | + - ++ –– ! ~ (escribe) tamaño de & * nuevo nuevo[] Eliminar Eliminar[] | Unario más Unario menos Pre-incremento Pre-decremento NO lógico Bit a bit NO Yeso estilo C Tamaño en bytes Dirección de Desreferencia Asignación de memoria dinámica Asignación de matriz dinámica Eliminación de memoria dinámica Eliminación de matriz dinámica |
4 L-> R | ->* .* | Selector de puntero de miembro Selector de objeto miembro |
5 L-> R | * / % | Multiplicación División Módulo |
6 L-> R | + - | Adición Sustracción |
8 L-> R | < <= > >= | Comparación menor que Comparación menor o igual que Comparación mayor que Comparación mayor o igual que |
9 L-> R | !¡ERROR! caracter ilegal '!' | Igualdad Desigualdad |
10 L-> R | & | Y bit a bit |
11 L-> R | ^ | XOR bit a bit |
12 L-> R | | | O bit a bit |
13 L-> R | && | Y lógico |
14 L-> R | || | OR lógico |
15 R-> L | ?: = *= /= %= += -= <<= >>= &= |= ^= | Condicional (ver nota a continuación) Asignación Asignación de multiplicación Asignación de división Asignación de módulo Asignación de adición Asignación de resta Asignación de desplazamiento a la izquierda bit a bit Asignación de desplazamiento a la derecha bit a bit Asignación AND bit a bit Asignación OR bit a bit Asignación XOR bit a bit |
16 R-> L | lanzar | Lanzar expresión |
17 L-> R | , | Operador de coma |
Notas:
- El nivel de precedencia 1 es el nivel de precedencia más alto y el nivel 17 es el más bajo. Los operadores con un nivel de precedencia más alto se evalúan primero.
- L-> R significa asociatividad de izquierda a derecha.
- R-> L significa asociatividad de derecha a izquierda.
Conclusión
Se trata de los operadores en C ++.
Hemos hablado de casi todos los operadores. Algunos operadores específicos que están presentes en la tabla de precedencia anterior que no hemos discutido, serán discutidos de acuerdo con los temas que cubrimos en nuestros próximos tutoriales.
=> Vea aquí para explorar la lista completa de tutoriales de C ++
Lectura recomendada
- Ejemplos de operadores aritméticos y booleanos de script de shell de Unix
- Operadores de Python
- Nuevos / eliminar operadores en C ++ con ejemplos
- Tipos de datos de Python
- Declaraciones condicionales Unix: If Then Else y operadores relacionales
- Tutorial de Python DateTime con ejemplos
- Tutorial de inyección de HTML: tipos y prevención con ejemplos
- Cortar comando en Unix con ejemplos