在使用C ++的新生CSc大学课程中,我们遇到了将十进制数转换为二进制数的问题。
我的代码是:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int x, bin=0, i=0;
cin>>x;
while(x!=0)
{
bin+=(x%2)*pow(10,i++);
x/=2;
}
cout<<bin;
return 0;
}
当我使用gcc 5.2.1在没有额外构建标志的情况下在Kubuntu 15.10上构建它时,我得到了10100
的预期输出20
。
然而,当我在Windows 10上使用CodeBlocks 13.12打包MinGW时构建它时,我得到10098
的输出为20
的相同输入。
与正确答案的这种奇怪偏差随着MinGW中最终输出的位数而增加。可能出现什么问题,为什么MinGW输出给出了错误的答案?