为了将给定数字转换为二进制,我编写了这段代码
//Binary conversion
int num,count=0;
int bi[15];
cout<<"Enter number";
cin>>num;
while(num>=1){
bi[count]=num%2;
num=num/2;
count++;
}
for(int i=0;i<=count;i++){
cout<<bi[count-i];
}
但答案是错误的。它在前面给出了-85993460。
如果我想转换10,结果将是-859934601010。
有人可以指出这段代码的错误
答案 0 :(得分:2)
当i
为零时,表达式count-i
是数组最后一个条目之后的一个位置;这是未定义的行为,因此可以打印任意数字,例如-85993460,或者程序可能会崩溃。
要向后打印数组,请改用bi[count-1-i]
,并在达到计数时结束循环:
for(int i=0 ; i != count ; i++) {
cout<<bi[count-1-i];
}
答案 1 :(得分:1)
你的循环限制是一个接一个 - 循环应该是
for(int i=1;i<=count;i++){
cout<<bi[count-i];
}