Эта программа не работает должным образом для десятичных знаков более 10 цифр?

Приведенный ниже код используется для подсчета числа цифр в данном десятичном разряде. Проблема в том, что он не подсчитывает цифры более 10.

int NumDigits(int n) { int digits = 0; if (n <= 0) { n = -n; ++digits; } while (n) { n /= 10; ++digits; } return digits; } 

    Кажется, что ваш toolchain имеет 32-битный тип int . Максимальное значение, представляемое в таком типе, равно 2 31 -1 или 2 147 483 647. Как вы можете видеть, это 10-значное число. Вам нужно будет использовать другой тип, который поддерживает большие числа, если вы хотите использовать этот тип алгоритма.

    Это 32-битное целое число, которое имеет максимальную сумму в 2,147,483,647. Возможно, вы захотите изучить использование 64-битных целых чисел или других решений.

    Попробуйте использовать тип аргумента.

    Как уже отмечал Джонатан в своем комментарии, int не может содержать число с более чем 10 цифрами.

    Причина в том, что ваш параметр имеет тип int, который ограничен по размеру. Скорее всего у вас есть Int32 (вы можете найти его с sizeof (int), который дает размер в байте), который идет до 2147483647, а затем переполняется до отрицательного значения -2147483648.

     Example: int i = 2147483647; i = i+1; printf("%d\n",i); 

    дает вам выход: «-2147483648»