十位数的求余除法没问题,多一位数就不行了,为什么呢?

#include
void main()
{
int a,b;
scanf("%d",&a);
b=a%10;
a=a/10;
printf("%d%2d",a,b);
}图片说明图片说明

c语言中,int 32 位最大值是2147483647 64位 *2 。
要想更大 用long long int

int的范围:-2^31~2^31-1即(-2147483648~2147483647)
1234567891在int范围内
但12345678921已经溢出了!

int取值是有界限的,超过之后代表,值溢出,其值会被转换为一个负数。

#include
int main()
{
long long int a,b;
scanf("%d",&a);
b=a%10;
a=a/10;
printf("%d%2d",a,b);
}图片说明
我换成了dev c++,出现了这种情况。dev c++是可以支持C99的longlongint的

DEVc++是可以用long long int的,只不过你的输入和输出格式出现了问题。

void main()
{
long long int a;
int b;
scanf("%llu",&a);
b=a%10;
a=a/10;
printf("%lld %d",a,b);
}

图片说明

******类型问题可参考以下资料********

https://blog.csdn.net/ljx0305/article/details/4422327