输入一个十进制数字,用函数编程计算这个数字一共有几位

#include<stdio.h>
#include<stdlib.h>
int count(int a);
int main()
{
int a;
int n=0;
scanf("%d",&a);
n=count(a);
printf("%d\n",n);
return 0;
}
int count(int a)
{
int i,n=0;
for(i=0;a!=0;i++)
{
a=a/10;
n++;
}
return n;
}
为什么我的程序只能算到10位的数字,如果输入12位数字输出也是10

数大小超出了int型范围,改成long long int


#include<stdio.h>
#include<stdlib.h>
int count(long long int a);
int main()
{long long int a;
int n=0;
scanf("%lld",&a);
n=count(a);
printf("%d\n",n);
return 0;
}
int count(long long int a)
{
int i,n=0;
for(i=0;a!=0;i++)
{
a=a/10;
n++;
}
return n;
}

int最大10位数。再大用unsigned long long

变量 a 是 int 型:

  1. int 整形数据类型,最大值只能有 2147483647,存不了大于10位的数字。
  2. 如果需要存放大于10位数字,需要用 long 型 或者 long long 型,也可以把数字转换成字符串操作。