/*
 * @topic T00030 Feb 14, 2013 -- raw storage of a float data type
 * @brief Coercing float into an int and back into float using memcpy library function
*/

#include <iostream>
#include <cstring> // defines memcpy() library function

int main()
{
    double price = 80.5;  // 64 bit (8 bytes) -- use double for most problems
    float angle = 80.5;   // 32 bit (4 bytes) -- use with many graphics laibraries

    int dummy;            // 32 bit (4 bytes)
    memcpy( &dummy, &angle, sizeof( int ) ); // copy memory bit-by-bit from float to int
    std::cout << dummy << "\n";     // show raw memory that stores a float value of 80.5

    float angle_copy;
    memcpy( &angle_copy, &dummy, sizeof( float ) ); // copy memory bit-by-bit from int to float

    std::cout << angle_copy << "\n"; // show that the value of 80.5 hasn't
                                     // changed after two memcpy() calls
    return 0;
}