如果大于10的位数,则不起作用

时间:2015-04-29 08:27:54

标签: c

我想制作输入数字和打印两个数字的程序,一个是所有奇数,第二个是偶数。

如果输入数字的数字小于10,但是当数字为10且更多数字出错时,它可以正常工作。你知道为什么吗?

unsigned long int n;
unsigned long int even=0,odd=0;
int countOdd=1,countEven=1;

printf("enter every number: \n");
scanf("%lu",&n);

 while(n!=0){
   if(n%2==0){
        even+=10*countEven*(n%10);
        countEven*=10;
              }
   else
       {
        odd+=10*countOdd*(n%10);
        countOdd*=10;

       }
   n=n/10;
   }
printf("the odd number is %d \n",odd/10);
printf("the even number is %d \n\n\n",even/10);

2 个答案:

答案 0 :(得分:4)

unsigned long在您的机器上可能是32位,它可以容纳的最大值是2 32 - 1(4294967295),您可能正在输入一个数字那更大。

请尝试使用unsigned long long,至少为64位。

答案 1 :(得分:1)

您已将n声明为unsigned long int,它可以在32位系统中保持4,294,967,295的最大值。因此,当您输入超过此值的值时,它会输出<{p}}

4294967296