当我在本地 vscode 使用我的代码时,它只给出 63 作为答案,但是当我使用不同的在线编译器时,它工作正常

When i use my code in local vscode its giving only 63 as answer but when i use a different online complier it works fine

这是一个 Luhn 算法代码,它在在线编译器中运行良好,但是当我在本地使用它时 vscode 它只给出 63 作为输出。

我不知道它是否是一个内存问题,因为它晚了 long 变量。

即信用卡号作为输入。

#include <stdio.h>

// Finds its Luhn algorithm to see if its a valid credit card number.
void checksum(long num)
{
    int sum = 0;
    for (int i = 0; num != 0; num /= 10, i++)
    {
        if (i % 2 == 0)
        {
            sum = sum + num % 10;
        }
        else
        {
            int digit = 2 * (num % 10);
            sum = sum + (digit / 10) + (digit % 10);
        }
    }
    printf("%d", sum);
}
int main()
{
    long int num;
    // Takes credit Card number as input.
    do
    {
        printf("Number: ");
        scanf("%li", &num);
    } while (num < 0);
    checksum(num);

    return 0;
}

我的输入类似于 374245455400126378282246310005。 输出总是 63.

结果取决于类型 long int 的大小,它可以等于类型 int 的大小或类型 long long int 的大小。

所以使用类型 long long int 而不是类型 long int

此外,由于程序需要一个无符号值,而不是有符号类型 long long int,最好使用 unsigned long long int.

类型