Desbordamiento de unsigned int

¿Qué contendrá el unsigned int cuando lo desborde? Para ser específico, quiero hacer una multiplicación con dos unsigned int : ¿qué estará en unsigned int después de que la multiplicación haya terminado?

 unsigned int someint = 253473829*13482018273; 

    unsigned números unsigned no se pueden desbordar, sino que se envuelven utilizando las propiedades del módulo.

    Por ejemplo, cuando unsigned int es 32 bits, el resultado sería: (a * b) mod 2^32 .


    Como señaló CharlesBailey, 253473829*13482018273 puede usar la multiplicación con signo antes de convertirse, por lo que debe ser explícito sobre unsigned antes de la multiplicación:

     unsigned int someint = 253473829U * 13482018273U; 

    El desbordamiento de enteros sin signo, a diferencia de su contraparte firmada, muestra un comportamiento bien definido.

    Los valores básicamente se “envuelven”. Es seguro y se usa comúnmente para funciones de cuenta regresiva o hashing / mod.

    Probablemente dependa un poco de tu comstackdor. Tuve errores como este hace años, y algunas veces obtenía un error de tiempo de ejecución, otras veces básicamente “volvía” a un número realmente pequeño que resultaría de cortar los bits de más alto nivel y dejar el rest, es decir, si es un 32 bit unsigned int, y el resultado de su multiplicación sería un número de 34 bits, cortaría los 2 bits de orden superior y le daría el rest. Probablemente tendrías que probarlo en tu comstackdor para ver exactamente lo que obtienes, que puede no ser lo mismo que obtendrías con un comstackdor diferente, especialmente si el desbordamiento ocurre en el medio de una expresión donde el resultado final está dentro del comstackdor. rango de un int sin signo