2009-07-21 15 views

Odpowiedz

19

Precyzyjnie. Cytując ze Standardu, 4.9, "Zachowanie jest niezdefiniowane, jeśli obcięta wartość nie może być reprezentowana w typie docelowym."

4

David Thornley odpowiedział na to pytanie już całkowicie. Jednak aby poradzić sobie z tą sytuacją w twoim kodzie, powinieneś rozważyć boost's numeric_cast.

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

Będzie to wyjątek w czasie wykonywania jeśli d jest zbyt duży dla int.

Powiązane problemy