更改变量名称导致运行时错误
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
重命名为 array2
而 while ((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++;
}
我真的很困惑为什么第二个例子会导致运行时错误,而唯一的区别是变量名。有人可以解释为什么会这样吗?
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
重命名为 array2
而 while ((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++;
}