我正在创建这个程序只是为了娱乐,但我遇到了问题
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int j = 1;
std::vector<int> n_bin(j);
int n=0;
int a;
cin>>n;
do
{
n_bin[j] = n%2;
n= n/2;
a++;
j++;
}while(n>0);
for(j=a; j>0; j--)
{
cout<<n_bin[j];
}
return 0;
} 唯一的问题是输出,实际上在实际二进制数之前,我得到了更多的数字,例如: 如果我将104分配给n,我得到:246978862916874543020108190880108137760108190884026797651687454302000108137760108191524026797651687454304302183600828414839627280108137760146978862716874543020001321208800108136960-10108137760760108364961101000其中仅最后7个有用。
答案 0 :(得分:3)
n_bin
被初始化为在n_bin[0]
处只有一个元素。通过访问索引超出范围,n_bin[j]
对于j
的除0以外的任何值都表现出不确定的行为。
答案 1 :(得分:0)
void decToBinary(int n)
{
int binaryNum[1000];
int i = 0;
while(n > 0)
{
binaryNum[i] = n % 2;
n = n / 2;
i++;
}
for(int j = i - 1; j >= 0; j--)
{
cout << binaryNum[j];
}
}