use*_*228 2 c++ floating-point portability
如果我通过此代码将浮动存储在文件中
fwrite((void*)(&v), sizeof(v), 1, f); // v is a float.
Run Code Online (Sandbox Code Playgroud)
使用此代码读取文件的程序多久会导致运行时错误,因为float是8个字节而不是4个?
float v;
fread((void*)(&v), sizeof(v), 1, f);
return v;
Run Code Online (Sandbox Code Playgroud)
我可以总是读取4个字节并将其转换为8字节的浮点数吗?那会更便携吗?
强调不同的Windows平台64位与32位.
我不会担心浮动的大小,更担心它的字节顺序.我要说绝大多数C++实现都使用IEEE 754,这意味着浮点数总是32位和64位.
您可能希望仅序列化值的文本表示,或者特别注意确保字节顺序正确.