У меня есть этот код, и по некоторым причинам я получаю очень большое число на каждой итерации цикла for и не могу понять логику.
#include <stdio.h>
#include <cs50.h>
#include <math.h>
#include <string.h>
int main(void)
{
long CARD, digits, digit, odd, sum;
// prompting the user for a positive card number and checking the length
do
{
CARD = get_long("Please insert your card number: ");
digits = floor(log10(labs(CARD)) + 1);
}
while (digits < 9 || digits > 16);
// Getting every other digit from the end (starting with the second to last)and adding the digits together
for (int i = 0; i < digits; i++)
{
CARD /= 10;
printf("%ld\n", CARD);
odd = CARD % 10;
printf("%ld\n", odd);
sum = sum + odd;
printf("%ld\n", sum);
CARD /= 10;
}
}
Хорошо, поэтому я ввожу номер 1234567890 и пропускаю цикл do-while, а когда я вхожу в цикл for, я получаю следующие значения (первые 3 отображения):
123456789
9
140443976194473 (но я ожидаю, что это будет 9)