La conversión de float a int en C++ puede ser comportamiento indefinido
C++ float-to-int conversion can be undefined behavior
Convertir un float a int en C++ es comportamiento indefinido cuando el valor truncado no cabe en el entero de destino. Esta conversión es fácil de hacer por accidente y mucho código la hace mal, incluso sin generar advertencias. El artículo muestra cómo incluso la biblioteca GSL de Microsoft, que promete conversiones seguras, tiene este problema. La solución correcta es verificar los límites antes de convertir, y se puede detectar el problema con UBSan.
El comportamiento indefinido es real, pero con los procesadores y compiladores actuales, el programa normalmente funciona de todos modos.