http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55771
Ian Lance Taylor <ian at airs dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |NEW Last reconfirmed| |2012-12-21 Resolution|INVALID | Ever Confirmed|0 |1 --- Comment #6 from Ian Lance Taylor <ian at airs dot com> 2012-12-21 13:29:01 UTC --- -3UL is not outside the range of float. -3UL == 0xfffffffffffffffd. That is less than FLT_MAX == 3.40282e+38. It is true that the value can not be precisely represented in float, but it is not out of range. So the standard says that the compiler must pick the nearest representable value, either higher or lower.