Печать количества цифр целого числа - PullRequest
0 голосов
/ 20 февраля 2019

Я должен отправить этот код, намерение состоит в том, чтобы посчитать цифры числа и распечатать его (диапазон от -2 31 + 1 до 2 31 -1)и результат должен быть представлен как одно число (например, учитывая число 234, которое он печатает 3)

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    long int num_ins;
    int contador = 0;

    printf("Inserir numero desejado a avaliar?\n"); // asking the number
    scanf("%ld", &num_ins);

    if (num_ins == 0) {
        printf("%d", 1);
    } else {
        while (num_ins != 0) {
            num_ins = num_ins / 10;
            contador++;
        }
        printf("%d", contador); //contador is count
    }
}

Но представление продолжает давать мне ошибку, что есть некоторые числа, где это не такверно, и я не могу понять это.

1 Ответ

0 голосов
/ 20 февраля 2019

Прежде всего, если вы используете 32-битный тип данных, диапазон будет -2^31 to 2^31 -1.

Таким образом, максимальное положительное число будет 2^31 = 2147483647, а минимальное будет -2147483648

long int иногда составляет 64 бита (как на моем ПК), поэтому его диапазон будет меняться.Максимальное значение при этом будет 9223372036854775807

Согласно вашему коду,

  • Если входное значение равно 2147483647, то выходное значение = 10.(Правильно).

  • Если входное значение равно 9223372036854775807 (максимальное допустимое значение), то выходное значение =
    19 (Правильно).

  • Если входное значение равно 92233720368547758078 (превышает максимально допустимое значение и число цифр равно 20), то
    output = 19 (неверно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...