2009-07-21 10 views

Respuesta

19

Precisamente. Citando del Estándar, 4.9, "El comportamiento no está definido si el valor truncado no se puede representar en el tipo de destino".

4

David Thornley respondió esta pregunta por completo. Sin embargo, para tratar esta situación en su código, debe considerar boost's numeric_cast.

double d = double(INT_MIN) - 10000.0; 
int a = boost::numeric_cast<int>(d); 

Esto lanzará una excepción en tiempo de ejecución si d es demasiado grande para una int.

Cuestiones relacionadas