i run this code in c++:
#include <iostream>
using namespace std;
int main()
{
float f = 7.0;
short s = *(short *)&f;
cout << sizeof(float) << endl
<< sizeof(short) << endl
<< s << endl;
return 0;
}
i get the following out pot:
4 2 0
but, in a lecture given in Stanford university, Professor Jerry Cain says he is sure the out pot well not be 0.
the lecture is can be fond here. he says that around the 48 minute.
is he wrong, or that some standard change since? or is there a difference between platforms?
I’m using g++ to compile my code.
EDIT: in the next lecture he does mention “big endian” and “small endian” and says that they well affect the result.
This program prints
00000000000000000000011100000010Since the
sizeof(short) == 2on your platform you get the first 2 bytes which are both zerosNote that since size of types and possibly float implementation (not sure about this) are implementation defined different output can be seen on different platforms.