如何计算long long / int

时间:2018-10-24 03:34:53

标签: c

我正在尝试学习如何自己编写代码,并且在计算中遇到了一些困难。有人可以在下面解释为什么pf总是返回0吗?

int main(void)
{
    //solicit input from users
    long long int num = get_long_long("Credit card no: ");
    eprintf("%lld\n",num);
    //initialize
    int i =0;
    int j =0;
    int counter =0;
    string status;

    //find length of input
    while (num>0)
    {
        num/= 10;
        counter++;
    }
    printf("counter is %i\n",counter);

  //Identify card type by prefix
    int power=(counter-2);
    eprintf("power is %i\n", power);

    int dp = pow(10,power);
    eprintf("divofp is %i\n", dp);
    //prefix=num
    long long int pf=(num/dp);
    eprintf("pf is %lld\n",pf); 
}

2 个答案:

答案 0 :(得分:2)

features = {c: df_train.values[:, i] for i, c in enumerate(columns)} 始终为零,因为pf循环结束时num设置为零。

因此,while将始终等于零。

一种好的调试方法是逐行浏览代码,并在每个时间点查看变量的值。
这样可以帮助您缩小此类问题的范围。

答案 1 :(得分:1)

问题在于您可以获取电话号码的长度:

while (num>0)
    num/=10;

此后num始终为0,因此您的最终表达式将为0,因为0 / x = 0(x!= 0)。