Esta es la primera de una serie de entradas que podemos denominar importantes. Recorreremos varios usos de los operadores matemáticos, formas de operar con números, editar valores de variables, generar números aleatorios, etc.
Suma, resta, multiplicación y división
Empezamos con lo más básico, las operaciones aritméticas «de toda la vida». Nada más lejos de la realidad, estas operaciones son las más simples e intuitivas:
1 2 3 4 |
su = su + 1; // Suma re = re - 2; // Resta mu = mu * 3; // Multiplicación di = di / 4; // División |
Los tipos de variables resultantes de las operaciones son los mismos que las variables empleadas en las mismas. Es decir, si las variables son de tipo int, el resultado será de tipo int. Si las variables son de tipos distintos, el resultado será del tipo de variable más grande. Sin embargo, si la variable a la que asignamos el resultado es de un tipo, el resultado será convertido a ese tipo:
1 2 3 4 5 6 |
int suma1 = 1 + 1 //suma1 = 2 (int) float suma2 = 1 + 2.0 //suma2 = 3.0 (float) int suma3 = 1 + 2.2 //suma3 = 3 (int) // Del mismo modo, la conversión se puede hacer de la siguiente forma (int) 2.123 // Dará como resultado 2, de tipo int. |
Desbordamiento (Overflow y Underflow)
Uno de los problemas con los que nos podemos encontrar es el desbordamiento. Tal y como vimos en el artículo Tipos de Datos, cada tipo tiene un límite superior y uno inferior. Veamos un ejemplo de desbordamiento:
Partamos de un tipo de datos entero, cuyo rango de valores va desde -32768 hasta 32768. Si al rango superior le sumamos una unidad, el resultado de la operación será el valor -32768, produciéndose el denominado desbordamiento superior u overflow. Por contra, si restamos una unidad al límite inferior, el resultado de la operación será 32768, produciéndose desbordamiento inferior o underflow.
Por eso debemos elegir de forma correcta el tipo de dato que vamos a utilizar en nuestros sketches, estableciendo un compromiso entre eficiencia y eficacia, es decir, lograr nuestro objetivo sin abusar del uso de recursos.
Un comentario
Pingback: Índice de Contenidos – Documentación - rDuinoStar | Arduino España