reinterpret_cast example

// File: reinterpret_cast.cpp

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
	int i = 5;
	double d = 3.14;

	cout << d << ' ' << static_cast<int>(d)  << ' ' << *(reinterpret_cast<int*>(&d)) << endl;

	ofstream fout("binaryfile");
	//fout.write(static_cast<char*>(&i), sizeof(i));	// compile error
	fout.write(reinterpret_cast<char*>(&i), sizeof(i));
	fout.write(reinterpret_cast<char*>(&d), sizeof(d));
	fout.close();
	
	i = d = 0;	// why is this a warning?
	d = i = 0;	// and not this?

	ifstream fin("binaryfile");
	fin.read(reinterpret_cast<char*>(&i), sizeof(i));
	fin.read(reinterpret_cast<char*>(&d), sizeof(d));
	fin.close();

	cout << i << ' ' << d << endl;

	return 0;
}