Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何计算long/int_C - Fatal编程技术网

C 如何计算long/int

C 如何计算long/int,c,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;

我正在努力学习如何自己编写代码,并且在计算中遇到了一些困难。有人能解释一下为什么下面的
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); 
}

pf
将始终为零,因为
num
循环结束时设置为零

因此,
num/anything
始终等于零

一种很好的调试方法是逐行检查代码,并查看每个时间点的变量值。

这可以帮助您缩小此类问题的范围。

问题在于从何处获取号码长度:

while (num>0)
    num/=10;

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

您调试了代码吗?当
pf=(num/dp)时,您将拥有
num=0
被执行。这就是为什么你在
pf
中有零。现在读吧!!!非常感谢你的帮助