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
中有零。现在读吧!!!非常感谢你的帮助