This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Jesper's answer is correct. Just wanted to clarify one statement in his post -
It's stored in memory in IEEE 754 double precision format.
Unlike Java, the language standards for C or C++ does not require the underlying implementation/hardware to use a floating point representation that conforms to the IEEE 754. However in practice, for the OP who uses a 32 bit system, and most other conventional desktops or laptops indeed conform to the IEEE 754 standard.
The takeaway is that, if one writes code that implicitly assumes a certain representation (like the OP's code for example), the C and C++ standards disavow such code claiming "undefined behaviour". This is because the interpretation of the underlying floating point representation as an integer could have unexpected weird effects in esoteric hardware (e.g., it could be a trap instruction).
Pay heed to the warnings!
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." -- Antoine de Saint-Exupery