帮我看看这个程序的错误在哪?

这是我的程序,当输入的数字小于6位时,他可以运行‘‘但是一大于6位,就出现乱码,这是这么回事‘‘‘帮忙解释一下谢谢‘‘‘#include<stdio.h>intmain(... 这是我的程序,当输入的数字小于6位时,他可以运行‘‘但是一大于6位,就出现乱码,这是这么回事‘‘‘帮忙解释一下谢谢‘‘‘
#include <stdio.h>
int main (void)
{
int shuru,xunhuan;
printf("qing shu ru shu zi?\n");
scanf("%i",&shuru);

do {
xunhuan = shuru % 10;
printf("%i",xunhuan);
shuru = shuru / 10;
}
while ( shuru != 0 );
printf("\n");
return 0;
}
你们两个都说的有理,我就不晓得把这分给哪个了```你们自己看把这个分给你们中的哪个吧```
展开
 我来答
user830316
2006-10-01 · TA获得超过1390个赞
知道大有可为答主
回答量:1371
采纳率:0%
帮助的人:1578万
展开全部
因为你的shuru,xunhuan都定义为INT类型的,TC环境下INT类型的空间为2字节,最大数为65536,超过这个就溢出错误,你输入的数字已经超过int类型空间的最限制,造成了溢出错误。

你只发现了6位数,事实上,如果输入超过65536一半32768的5位数也会出现错误。
s903s
2006-10-01 · TA获得超过2181个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:0
展开全部
user803316说得对. 用32位C可以输入更大的数.
如果用TC, 建议把int 改为unsigned long, 即
unsigned long shuru, xunhuan;
scanf句中的%i改成%ul;
这样可以输入更大的数.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式