Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ÁREA:
Área de Ingenierías
ASIGNATURA:
Programación II (INS214)
DOCENTE:
Lorenzo Solano Martínez
ASIGNACIÓN SOBRE:
Investigación grupal
SECCIÓN:
01
SUSTENTANTES Y MATRÍCULAS:
Alexander Meléndez Santiago ICS-1088455
Ariana Isabella López Ward IDS-1092967
Ian Rafael De los Santos Pouerie IDS-1095250
José Carlos Contreras Romero IDS-1095948
Elvis Rafael Cambero González IDS-1088410
En Java, un integer de tipo int puede ser negativo o positivo, lo que significa que con sus 32bits podemos
Asignarle valores entre −231 y 231 . La wrapper class o clase contenedora en español, define dos
constantes que contiene los valores Integer.MIN_VALUE y Integer.MAX_VALUE. Normalmente, al
intentar definir una variable de tipo int asignándole un valor = MAX_VALUE + 1, el resultado sería una
variable indefinida o que se presente un error. Pero en el caso de Java, el valor sería -2147483648 (el valor
mínimo), y si se intenta utilizar MIN_VALUE – 1, el resultado sería 2147483647 (el valor máximo). Este
comportamiento se conoce como integer-wraparound. Ejemplo:
OUTPUT:
1 2147483646
2 2147483647
3 -2147483648
4 -2147483647
En el caso de C#, al tener una operación aritmética que produce un resultado fuera del rango del tipo de
data retornado por la operación se produce un error llamado OverflowException. El OverFlow Exception
ocurre bajo ciertas condiciones donde: a) una operación aritmética genera un resultado que está fuera del
intervalo del tipo de datos devuelto por la operación o b) una operación de conversión o conversión intenta
realizar una conversión de restricción y el valor del tipo de datos de origen está fuera del intervalo del tipo
de datos de destino. Sin embargo, este error solo se produce cuando la operación se realiza en un contexto
comprobado. Si la operación se produce en un contexto no comprobado, el resultado se trunca descartando
los bits de orden superior que no caben en el tipo de destino.
Aquí un ejemplo de un try-catch que produce este error:
• Java
Un detalle importante sobre los errores underflow y overflow en Java es que NO lo van a
reportar sólo lo “absorberán”, como se sugirió posteriormente.
Esto en sí ya es peligroso, el programador no tiene forma de saber que ha cometido un error,
continuará codificando y puede ocasionar problemas en el futuro.
A continuación, se muestran las tres técnicas principales para detectar los errores de underflow y
overflow de enteros no intencionado:
a) Prueba de condiciones previas: revise las entradas de cada operador aritmético para
comprobar si hay errores y, ponga un ArithmeticException en el caso de que produzca
algún error. Tenga en cuenta que esta manera puede ser compleja y consumir mucho
tiempo.
● Mertikas, E., & Snavely, W. (2018, 12 febrero). NUM00-J. Detect or prevent integer overflow -
SEI CERT Oracle Coding Standard for Java - Confluence. SEI External Wiki.
https://wiki.sei.cmu.edu/confluence/display/java/NUM00-
J.+Detect+or+prevent+integer+overflow