While asking for help on a C++ program to convert binary numbers to integers, @dasblinkenlight wrote the following program. Using the Ideone IDE and also Repl.it, I noticed that it returns the expected value 482
. However, using a local IDE (Code::Blocks
tested in 2 computers), this same program returns the value 506
. Why does this happen?
#include <iostream>
#include <cmath>
using namespace std;
int int_length(int bit_number);
int bin_to_int(int bit_number);
int main()
{
cout << bin_to_int(111100010) << endl;
return 0;
}
int int_length(int bit_number){
bool found = false;
int digit_count = 0;
while(!found){
int division = bit_number / pow(10, digit_count);
if(division < 1){
found = true;
}
else{
digit_count++;
}
}
return digit_count;
}
int bin_to_int(int bit_number){
int number_length = int_length(bit_number);
int number = 0;
for(int i = 0; i < number_length; i++){
int e = pow(10, i);
int digit = (bit_number / e) % 10;
digit = digit * pow(2, i);
number = number + digit;
}
return number;
}