如果我通过这段代码在文件中存储一个 float
fwrite((void*)(&v), sizeof(v), 1, f); // v is a float.
使用此代码读取文件的程序多久会因为 float 是 8 个字节而不是 4 个字节而导致运行时错误?
float v;
fread((void*)(&v), sizeof(v), 1, f);
return v;
我能否始终读取 4 个字节并将其转换为 8 个字节的 float ?这样会更便携吗?
强调 64 位与 32 位的不同 Windows 平台。
最佳答案
我不太担心 float 的大小,而更担心它的字节顺序。我会说绝大多数 C++ 实现使用 IEEE 754,这意味着 float 总是 32 位和双 64 位。
您可能希望只序列化值的文本表示,或者特别注意确保字节顺序正确。
关于c++ - 在文件可移植性问题中存储 32 位 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6715545/