2017-08-20 72 views
-1

發生錯誤時,我將for循環中的n值更改爲2.我很確定,雖然我不除以0。我需要做的就是將cardnumber中的其他數字乘以2,並將它加到summ中(但是,如果這個其他數字* 2是一個兩位數字,我必須將2個單位數字從它例如14變爲1 4)浮點異常C爲什麼,它是什麼?

long cardnumber = 378282246310005; 
int Luhn = 0; 
/*Luhn's algorithm*/ 
for(int n = 2; n <16; n = n + 2) 
{  
    /*check the digits that exceed 10*/ 
    if((((cardnumber % (10^n)) *2) > 10)) 
     Luhn += (cardnumber % (10^n)) + 1; 
    else 
     Luhn += (cardnumber % (10^n)) * 2; 



} 
printf("%d", Luhn); 
+3

'^'操作符在JavaScript中是按位XOR的 - 不是'10 ** n'也是有意義的。您應該將卡號存儲爲一個字符串,以方便使用。 – Ryan

+2

確實'10^10'是'0',它會給你一個除以0的錯誤。 –

+0

又一個「學習如何通過猜測編碼直到編譯」的受害者。 –

回答

1

^爲按位XOR操作,不求冪。當n = 10時,表達式10^n評估爲0,這導致cardnumber % (10^n)變爲被零除。

+3

只有查克諾里斯能被零除! –

+0

或取消引用空指針 –