Estoy implementando una calculadora en un microcontrolador que se controla a través del puerto serie. Por ejemplo, enviaría 1234*5678=
y respondería con 7006652\r\n
. He escrito el código para esto usando el compilador C18.
Cuando envío 123456*789123=
, recibo la respuesta 2932688576
, que es incorrecta. La respuesta correcta habría sido 97421969088
, pero eso desborda un unsigned long
.
No quiero aumentar el límite de desbordamiento, pero me gustaría tener una manera de verificar si ha habido un desbordamiento. En ASM, eso sería posible al verificar el bit relevante en el registro de ESTADO, sin embargo, con C, este bit se borraría antes de que pudiera leerlo, ¿no?
Lo mejor sería una solución general para ver si ha ocurrido un desbordamiento.