Я думаю, что попытка визуализировать процесс вашей программы - отличный способ проверить, выполняет ли ваше решение то, что вы ожидаете. Для этого предположим, что наш number
будет 12345
. Код говорит, что хотя это не равно 0
, мы сделаем number % 10
, а затем number /= 10
. Так что если у нас есть 12345
, то:
number % 10
-> 12345 % 10
-> 5
не назначено никакому значению, поэтому никаких изменений не производится. Это будет верно во время каждой итерации while l oop, за исключением различных значений number
на этом пути.
number /= 10
-> 12345 /= 10
-> 1234
number /= 10
-> 1234 /= 10
-> 123
number /= 10
-> 123 /= 10
-> 12
number /= 10
- -> 12 /= 10
-> 1
number /= 10
-> 1 /= 10
-> 0
(из-за целочисленного деления)
Теперь, когда number == 0
true, мы переходим к блоку if/else
, и, поскольку number < 0
равно false, мы всегда переходим к блоку else
и затем заканчиваем sh с помощью оператора cout
. Обратите внимание, что в то время как l oop будет требовать number == 0
, чтобы быть верным для выхода, поэтому эта программа всегда будет выводить 0
.
Чтобы обойти это, вам, вероятно, понадобится либо чтобы создать отдельное число, в котором вы можете хранить последние цифры по мере прохождения l oop, придавая им правильный вес, умножая их на степени 10 (аналогично тому, что вы надеетесь сделать), или приводите свой номер к строке и печатать каждый индекс строки в обратном порядке, используя al oop.