On Fri, Apr 24, 2015 at 05:44:47PM -0400, Sean Conner wrote:
Makes sense when you think about it. Even more interesting is this bit of
code:
[converting 2^33 to 32-bit int/unsigned int
(Again, assumption is sizeof(int) == sizeof(float).)
The results here have me perplexed because the output is not what I
expected:
8589934592.000000 -2147483648 0
Truthfully, I'm not sure what I expected, but two wildly different answers
isn't it; perhaps INT_MAX and UINT_MAX but not INT_MIN and 0! 2^31 gave the
expected answers, and 2^32 gave -2147483648 0.
In C, converting a float type to an integer is undefined behaviour if the
value can't be represented (after truncating fractional bits). So any
result or behaviour is "correct". :-)
Chris