Мой код выглядит следующим образом:
void findten ()
{
int x = 1, power = 0;
printf("10^%d, x = %d\n", power++, x);
while((x*10)/10 == x)
{
x *= 10;
printf("10^%d, x = %d\n", power++, x);
}
}
Идея состоит в том, что l oop должен остановиться, когда x> 10e9 из-за максимального целочисленного значения. Когда я впервые запустил и скомпилировал это, оно работало просто отлично, и оно продолжает работать на компьютере, на котором я впервые написал. Давайте назовем этот компьютер A.
На другом компьютере, компьютере B, я скомпилировал тот же файл, содержащий функцию, и она не работает, вместо этого выполняя бесконечное l oop, где x в конечном итоге равно 0. Я запутался, почему это произошло.
Функция действительно одинакова в обоих случаях.
Правильный вывод, который компьютер A дает мне:
10^0, x = 1
10^1, x = 10
10^2, x = 100
10^3, x = 1000
10^4, x = 10000
10^5, x = 100000
10^6, x = 1000000
10^7, x = 10000000
10^8, x = 100000000
10^9, x = 1000000000
Компьютер B выводит тот же вывод, но затем продолжает работу и переполняет int. В конце концов, х = 0 в какой-то момент, по причине, которую я не понимаю.