En realidad, ni siquiera puede detectar el desbordamiento de forma fiable después del hecho, porque el desbordamiento en las operaciones de entero con signo da como resultado un comportamiento indefinido. Si el compilador puede ver que solo se llega a una ruta de código en caso de un desbordamiento, se puede optimizar completamente (ya que en el caso de comportamiento indefinido puede hacer cualquier cosa). Los tipos sin signo son diferentes porque tienen características de desbordamiento definidas (realizan la aritmética del módulo).
Por lo tanto, la única forma de detectar el desbordamiento con los tipos firmados es realizar la comprobación adecuada de antemano, lo cual es bastante caro. Casi siempre es mucho más eficiente diseñar cosas de modo que una constante de su algoritmo asegure que no puede haber un desbordamiento.
En cuanto a los recursos de detectar la posible desbordamiento antes de que suceda, ver https://stackoverflow.com/a/199413/445525
En lugar de utilizar valores enteros en bruto, se puede usar objetos con los operadores aritméticos sobrecargados que generen excepciones cuando se produce desbordamiento. – jamesdlin
¿cuál es la operación que está haciendo con los números? – Baget
@Baget podría ser cualquier cosa. suma, resta, multiplicación, exponente, etc. depende del programa –