更改变量名称导致运行时错误

changed variable names causes runtime error

我真的很困惑为什么第二个例子会导致运行时错误,而唯一的区别是变量名。有人可以解释为什么会这样吗?

int main (void)
{
    long long ccNumber;
    int ccLength;
    printf("Enter Credit Card Number: ");
    ccNumber = get_long_long();
    ccLength = (int)log10(ccNumber) + 1;
    if (ccLength != 13 && ccLength != 15 && ccLength != 16)
        printf("Invalid Card Number.\n");

    int array[ccLength];
    long long copyCcNumber = ccNumber;
    int loopCounter = 0;

    while (copyCcNumber != 0)
    {
        array[ccLength - 1 - loopCounter] = copyCcNumber % 10;
        copyCcNumber = copyCcNumber / 10;
        loopCounter++;
    }

这个

    int numberArray2[ccLength/2];
    int k = 2;
    int l = 0;

    while ((ccLength - k) > -1)
    {
        numberArray2[l] = 2 * array[ccLength - k];
        k = k + 2;
    l++;
    }
    return 0;
}

VS

    int array2[ccLength/2];
    int everyOtherDigit = 2;
    int loopCounter2 = 0;

    while ((ccLength - loopCounter2) > -1)
    {
        array2[loopCounter2] = 2 * array[ccLength - everyOtherDigit];
        everyOtherDigit = everyOtherDigit + 2;
        loopCounter2++;
    }
    return 0;
}

好吧,您遇到了一个简单的复制和粘贴错误:在 while 循环中您没有将 array 重命名为 array2while ((ccLength - loopCounter2) > -1) 应该是 while ((ccLength - everyOtherDigit ) > -1)

int array2[ccLength/2];
int everyOtherDigit = 2;
int loopCounter2 = 0;

while ((ccLength - everyOtherDigit) > -1)
{
    array2[loopCounter2] = 2 * array2[ccLength - everyOtherDigit];
    everyOtherDigit = everyOtherDigit + 2;
    loopCounter2++;
}