El desbordamiento de enteros no se puede detectar después del hecho. Debe verificar los operandos para ver si puede suceder y manejarlo adecuadamente para su caso de uso.
Además, la detección de desbordamiento sería algo como esto:
// quiero hacer c = a + b int a, b, c; int diff = INT_MAX - a; si (b> diff) { // se producirá un desbordamiento para a + b } c = a + b;
Para la multiplicación es lo mismo, pero haces la división en lugar de la resta y es posible que tengas que tener en cuenta el resto de la división entera si realmente quieres cubrir todos los casos límite.
- ¿Los algoritmos de aprendizaje profundo representan métodos basados en conjuntos?
- ¿Dónde y cómo puedo aprender sobre la creación / comprensión de algoritmos de negociación de acciones?
- ¿Por qué la resta es la que consume menos tiempo? (La pregunta contiene una suposición incorrecta)
- Si alguien pudiera factorizar rápidamente los números primos, ¿cuáles serían las consecuencias?
- Si uno se está preparando para una entrevista en Google (y tiene 6 meses en la mano), ¿qué libro lo beneficiará más y por qué? ¿'Introducción a los algoritmos' (CLRS) o 'Algoritmos desbloqueados'?
Como nota al margen del algoritmo RSA en el que está trabajando. Implementar algoritmos criptográficos para que funcionen es una cosa. Implementarlos para que estén seguros es mucho más difícil. Hay muchas cláusulas ‘if’ en su código sin y ‘else’ … todas esas son un gran lugar para un ataque de tiempo. Para evitar ataques de tiempo, debe hacer que el programa se ejecute durante la misma cantidad de tiempo, independientemente de la entrada. Para descubrir más google “ataque de canal lateral”.