/ = работа в C ++ - PullRequest
       16

/ = работа в C ++

1 голос
/ 07 ноября 2019

Как я понимаю, этот код возвращает количество цифр, введенных в функцию, но я не понимаю эту операцию: (number /= 10) != 0 вообще .. Я понимаю, что эта строка number /= 10 равна number = number / 10, но почему бы и нет, нопочему в этой функции они не пишут number / 10 != 0? а в чем отличия?

std::size_t numDigits(int number) // function definition.
{                                 // (This function returns
std::size_t digitsSoFar = 1;      // the number of digits
                                  // in its parameter.)
while ((number /= 10) != 0) ++digitsSoFar;
return digitsSoFar;
}

1 Ответ

4 голосов
/ 07 ноября 2019
(number /= 10) != 0

На самом деле это 3 шага. Это ...

  1. Вычисляет number / 10
  2. Назначает это значение number
  3. Проверяет, не равно ли это значение 0

Итак, в ответ на ваш вопрос: «почему в этой функции они не пишут number / 10 != 0», давайте пройдемся по тому, что это делает:

  1. Вычисляет number / 10
  2. Проверяет, не равно ли это значение 0

Видите ли вы разницу между ними?

Если вы все еще не уверены, почему это важно,поместите оператор вывода в цикл while, который покажет number и digitsSoFar, и попытайтесь запустить эту функцию как в том виде, в котором она написана, так и в предложенной вами версии.

...