What happens if I cast a double to an int, but the value of the double is out of range?
Lets say I do something like this?
double d = double(INT_MIN) - 10000.0;
int a = (int)d;
What is the value of a? Is it undefined?
Precisely. Quoting from the Standard, 4.9, "The behavior is undefined if the truncated value cannot be represented in the destination type."
David Thornley answered this question completely already. However to deal with this situation in your code you should consider boost's numeric_cast.
double d = double(INT_MIN) - 10000.0;
int a = boost::numeric_cast<int>(d);
This will throw an exception at runtime if d
is too big for an int
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With