Operadores aritméticos y lógicos, conversión de datos explícitos e implícitos, precedencia de operaciones
Introducción
Estudiantes de programación en Lenguaje C, sean bienvenidas y bienvenidos, en cada sesión estas avanzando en el conocimiento sobre el uso de enunciados y expresiones, uso de la semántica y sintaxis utilizada en este lenguaje.
- Operadores aritméticos
- Operadores de asignación
- Operadores matemáticos unarios
- Operadores matemáticos binarios
- Operadores de asignación compuestos
- Precedencia de operadores y uso de paréntesis
- Precedencia de operadores
- Operadores lógicos
- Conversión de datos
- Conversión implícita
- Conversión explicita
También encontraras algunos ejemplos escritos en lenguaje C. Para que puedas copiarlos en tu compilador seleccionado y pruebes su funcionamiento.
¡Iniciemos y avancemos en el conocimiento!
Desarrollo del tema
Operadores aritméticos
Un operador es un símbolo que le da instrucciones al Lenguaje C para que ejecute una acción.
En una expresión de Lenguaje C podemos ver dos elementos: el operador y el operando. El operando es el elemento sobre el cual actúa el operador.
Operador de asignación
El operador de asignación, es el signo de igual ( = ).
Asignar significa pasar el valor.
Ejemplo:
x = y ; // Esta expresión en las matemáticas normales significa; x es igual a y, sin embargo, en un lenguaje de programación significa: asignar el valor de y a x.
Ejemplo:
x = 8; // x tiene el valor de 8
y = 9; // y tiene el valor de 9
x = y; // y es igual a x significa qué, x ahora tiene el valor de 9
Operadores matemáticos unarios
Se les llama unarios debido a que toman solo un operando.
Símbolo | Operador | Descripción | Ejemplo |
++ | Incremento | Incrementa el operado en 1 | ++x, x++ |
— | Decremento | Decrementa el operando en 1 | –x, x– |
– | Cambio de signo | Cambia de signo al operando | -6 |
El operador unario negativo invierte el signo de una expresión, de positivo a negativo o viceversa. El resultante en el operando es el de multiplicar el número por -1.
Ejemplos:
a = -6;
x = 8;
y = 10;
++x; // Su valor ser 9
–y; //Su valor ser 9
Estas expresiones de “++x” y “—y” son equivalentes a:
x = x + 1;
y = y – 1;
Se debe tener cuidado con el uso del prefijo y del posfijo de incremento o decremento:
- Al usar el símbolo en modo de prefijo, los operadores de incremento y decremento modifican a su operando antes de que sea usado.
- Al usar el símbolo en modo de posfijo, los operadores de incremento y decremento modifican su operando después de que es usado.
Ejemplo: Uso de operadores unarios con demostración de uso de prefijo y posfijo.
Operadores matemáticos binarios
Son las operaciones matemáticas comunes.
Símbolo | Operación | Descripción | Ejemplo |
+ | suma | Suma los dos operandos | a + b |
– | resta | Resta el segundo operando del primero | a – b |
* | multiplicación | Multiplica los dos operandos | a * b |
/ | división | Divide el primer operando entre el segundo | a / b |
% | módulo | Da el residuo cuando el primer operando es dividido entre el segundo. | a % b |
La operación de módulo regresa el residuo cuando el primer operando es dividido entre el segundo operando:
Ejemplo:
50 módulo de 7 el residuo es 1
50 módulo de 5 el residuo es 0
Operadores de asignación compuestos
Los operadores de asignación compuestos combinan una operación matemática binaria con una operación de asignación.
El enunciado para los operadores de asignación compuesto tiene la sintaxis:
expresion1 operacion= expresion2 equivalente a: expresion1 = expresion1 operacion expresion2;
Haciendo uso de estos operadores se podrían escribir esas expresiones de forma abreviada:
z = z + 5 equivalente z +=5
x = x * ( y – 2) equivalente x*= y-2
Algunos ejemplos de enunciados quedan como se muestra en la siguiente tabla:
Operador de asignación compuesto | Equivalente a |
x *= y | x = x * y |
z += x – 1 | y = y + z – 1 |
x /= b | x = x / y |
x += y / 5 | x = x + y / 8 |
x %= 6 | y = y % 6 |
Ejemplo uso de operadores de asignación compuesta.
Precedencia de operadores
Precedencia se refiere al orden en que se ejecutan las operaciones:
Por ejemplo, en la siguiente expresión:
a = 7 + 3 * 5;
Si primero se ejecuta la multiplicación tenemos a = 7 + 15; y entonces se le asigna 22 como valor a la variable a.
Ahora si primero se ejecuta la suma tenemos a = 10 * 5; y entonces se le asigna 50 como valor a la variable a.
Operador | Precedencia | Descripción |
++ — | 1 | Incremento y decremento unario |
* / % | 2 | Multiplicación, división y módulo |
+ – | 3 | Suma y resta |
Las operaciones con precedencia 1 se realizan antes que las de menor precedencia 3. Si en una operación encontramos signos del mismo nivel de precedencia, la operación se realiza de izquierda a derecha.
Por ejemplo:
x = 50 % 7 * 8;
Módulo y multiplicación son del mismo nivel de precedencia, al ejecutar de izquierda a derecha la expresión se ejecuta:
x = 1 * 8;
x = 8;
Precedencia y uso de paréntesis
Si una expresión no se evalúa con la precedencia que se espera se puede hacer uso de los paréntesis.
Ejemplo 1:
a = (30 + 6) * 3;
a = 36 * 3;
a = 108;
Ejemplo 2: Evaluación de precedencia con paréntesis y operadores de mismo nivel.
La evaluación que hace el Lenguaje C para interpretar el resultado de comparación de operandos es 0 si la expresión es falsa y 1 si la evaluación de la expresión es verdadera. La evaluación de la operación == (igual
igual) no debe confundirse con el de asignación = (igual).
Los operadores relacionales tienen menor precedencia que los operadores matemáticos.
Aquí te muestro la tabla de orden de precedencia de los operadores relacionales de Lenguaje C.
Operadores lógicos
Los operadores lógicos permiten realizar combinaciones de dos o más expresiones relacionales en una sola expresión y la evaluación de esta expresión es verdadero (1) o falso (0).
Ejemplos:
Expresión | Evaluación |
(7 == 7) && (5 ¡= 3) | Verdadero (1) ambas expresiones son verdaderas. |
(6 > 4) || (4 < 2) | Verdadero (1) al menos una expresión es verdadera. |
! (8 == 5) | Verdadero (1) la expresión es falsa |
Precedencia de operadores lógicos
Símbolo | Precedencia | Descripción |
¡ | 1 | Precedencia igual a los operadores matemáticos unarios ++ y –, por tanto, tiene precedencia mayor a los operadores relacionales y operadores matemáticos binarios. |
&& | 2 | Tiene menor precedencia que todos los operadores matemáticos y relacionales, pero tiene mayor precedencia que || |
II | 3 | Tiene menor precedencia que todos los operadores matemáticos y relacionales, y tiene menor precedencia que && |
Conversión de tipos de datos
Implícita: se realiza automáticamente
Explicita: la controlada por la sintaxis de programación
Para la conversión de tipos de datos, lo mejor es haber comprendido previamente los tipos de datos y su tamaño, si aun te queda claro este tema, te invito a volver a repasar los tipos de datos antes de seguir con el tema de conversiones de tipos de datos.
Conversión implícita
Los datos pueden convertirse en las siguientes situaciones:
Conversión explicita
Conversión creada por el programador: (tipo) Expresión
Ejemplo:
float diferencia;
int minuendo, sustraendo;
diferencia = minuendo – sustraendo;
La conversión explícita se expresa como:
float diferencia;
int minuendo, sustraendo;
diferencia = (float) minuendo – sustraendo;
Operador sizeof ()
Lenguaje C incorpora el operador sizeof, que permite conocer el tamaño en bytes.
Por definición el tipo char tiene tamaño de 1 byte. Para otros tipos de datos básicos su tamaño puede variar entre diferentes arquitecturas.
La función del operador sizeof devuelve el tamaño de tipo de dato o de una variable. Ejemplo:
sizeof (char)
sizeof (a)
Para seguir aprendiendo en la práctica cómo funciona la conversión de tipos de datos, te invito a analizar los siguientes videos: Sanlegas.[@issale99](26/09/2015).
codigofacilito.[@codigofacilito](26/01/2017).9.- Curso Básico de C – Palabras Reservadas y Conversión de Tipos de Datos[Video].Youtube.
Conclusión
En esta sesión aprendiste sobre el uso de operadores aritméticos (matemáticos) en el lenguaje de programación en C.
Estas operaciones aritméticas permiten realizar operaciones sobre sus operandos, cada operación que se ejecuta sobre un operando genera un resultado que se almacena en alguna posición de memoria, El resultado que genera (valor) es una representación interna del que dependerá de los tipos de los operadores.
Recuerda las precedencias y orden que existe entre los operadores aritméticos, lógicos y relacionales, y que entre ellos puedes hacer uso de paréntesis para separar expresiones de precedencia. Recuerda el uso de la conversión de uso de datos.
¡Sigue practicando!
Fuentes de información
- Gottfried, B. S. (2005). Programación en C. McGraw-Hill Interamericana. Schildt H (1991), Programación en TURBO C. McGraw-Hill. https://repository.unad.edu.co/bitstream/handle/10596/11970/Chave?sequence=3
- C Programming Language, Brian W. Kernighan Dennis M. Ritchie. Prentice Hall; 2 ed. Sitios web con programación estructurada en C y trabajos académicos específicos.