为什么以下C代码不起作用?我无法弄清楚错误。

时间:2016-12-21 13:16:30

标签: c arrays memory-management memory-leaks

我不知道问题出在哪里。代码编译没有任何错误,但在运行它时,它会询问我一个数字但是当我在输入后按Enter键时它会崩溃。谁能告诉我问题出在哪里?我认为有一些记忆问题,但我无法弄清楚在哪里。提前致谢。

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

int main(void)
{ 
    int n[16];
    long long a;
    printf("enter your credit card number \n");
    scanf(" %lld", &a);
    int i;
    for ( i = 0; i < 15; i++)
    {
        n[i] = (a % (10^(15-i))) / 10^(14-i);
    }
    int m = (n[1] + n[3] + n[5] + n[7] + n[9] + n[11] + n[13]);
int w = 2 * m;
int k = w % 10;
int l = n[0] + n[2] + n[4] + n[6] + n[8] + n[10] + n[12] + n[14];
int z = k + l;
if (z % 10 == 0)
{
    printf("you card is valid");
}
else
{
    printf("go get a new card");
}
return 0;
}

2 个答案:

答案 0 :(得分:2)

^表示逐位异或。如果您想要掌握某些功能,请使用pow()功能。

答案 1 :(得分:0)

虽然Lundin提到了所需的代码,但运行时错误的实际问题是:

    {li>

    (10^(15-i))i = 5 10^10还记得XOR规则时)时给出0吗?

  • 因此(a % (10^(15-i)))变为a%0,这是典型的零运行时误差。