Apuntes sobre Operadores Aritméticos en C
Introducción a los Operadores Aritméticos
Con un entendimiento básico de los tipos enteros en C, podemos explorar cómo estos tipos de variables se manipulan mediante operadores aritméticos. Estos operadores permiten realizar operaciones matemáticas como suma, resta, multiplicación, división y módulo. A continuación, se detalla cada operador con ejemplos.
Suma
El operador de suma es el más común y se representa con el símbolo +
. Permite sumar dos valores enteros.
Ejemplo
unsigned int op1 = 1;
unsigned int op2 = 3;
unsigned int result = op1 + op2; // result = 4
En este ejemplo, se suman las variables op1
y op2
, y el resultado se almacena en la variable result
.
Resta
El operador de resta se representa con el símbolo -
. Resta el valor de una variable de otra.
Ejemplo
unsigned int op1 = 5;
unsigned int op2 = 3;
unsigned int result = op1 - op2; // result = 2
Aquí, el valor de op2
se resta de op1
, y el resultado se guarda en result
.
Multiplicación
El operador de multiplicación se representa con el símbolo *
. Multiplica dos valores enteros.
Ejemplo
unsigned int op1 = 0x100; // 256 en decimal
unsigned int op2 = 2;
unsigned int result = op1 * op2; // result = 512
En este caso, se multiplica op1
por op2
, y el resultado se almacena en result
.
División
El operador de división se representa con el símbolo /
. Divide un valor entero por otro.
Ejemplo
unsigned int op1 = 0x100; // 256 en decimal
unsigned int op2 = 2;
unsigned int result = op1 / op2; // result = 128
Aquí, op1
se divide entre op2
, y el resultado se guarda en result
.
Nota: Dividir por cero es una operación inválida y, en sistemas como Linux, genera una señal SIGFPE
(error/excepción).
Módulo
El operador de módulo se representa con el símbolo %
y calcula el resto de una división entre dos números.
Ejemplo
unsigned int op1 = 0x100; // 256 en decimal
unsigned int op2 = 2;
unsigned int result = op1 % op2; // result = 0
El módulo es útil para limitar un número dentro de un rango específico. Por ejemplo, el siguiente código asegura que no se acceda fuera de los límites de un arreglo:
int numbers[16] = {};
for (int i = 0; i < 100; i++) {
numbers[i % 16] += 1; // Incrementa el elemento correspondiente
}
En este caso, el operador %
garantiza que el índice i
se mantenga dentro del rango de 0 a 15, recorriendo el arreglo numbers
varias veces sin desbordar sus límites.
Conclusión
Los operadores aritméticos en C (+
, -
, *
, /
, %
) son herramientas esenciales para manipular tipos enteros. Comprender su funcionamiento, incluyendo casos especiales como la división por cero o el uso del módulo para controlar rangos, es fundamental en la programación de bajo nivel, especialmente en contextos como la explotación de binarios.