【发布时间】:2010-06-08 22:08:51
【问题描述】:
我有一个简单的程序,我在 MinGW 和 Visual C++ 2008 Express 中都编译过,并且都给出了大于 88200 的输出文件。当我设置 s = 0 时,两个程序都按预期工作。我做错了什么?
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
int i;
short s;
fstream f;
f.open("test.raw", ios_base::out);
for(i = 0; i < 44100; i++)
{
s = i & 0xFFFF; // PROBLEM?
f.write(reinterpret_cast<const char *>(&s), sizeof(s));
}
f.close();
return 0;
}
【问题讨论】:
-
请注意,这种事情不会跨不同字节序的架构移植。 (至少,您将无法读取一个背对另一个写入的文件。)