一个关于c语言scanf函数的问题

main(){intx,y;scanf("%2d*%d",&x,&y);printf("%d%d",x,y);}我输入365*36为什么每次输出3625396我是故意让输... main()
{
int x,y;
scanf("%2d*%d",&x,&y);
printf("%d %d ",x,y);
}
我输入365*36为什么每次输出36 25396
我是故意让输入超出的%2d的
不好意思
每次输出是36 25391
为什么每次输出后面的那个都是25391
展开
 我来答
fengjian_net
2007-01-19 · TA获得超过2864个赞
知道大有可为答主
回答量:1799
采纳率:50%
帮助的人:2495万
展开全部
由于输入流错误,
scanf("%2d*%d",&x,&y);
当输入365*36
是首先x获取36这个数据,然后要获得*字符但是流中不是该字符,因而输入流错误,后面的y数据的处理就依赖于编译器了,不同编译器的数据可能是不同的,没有必要考究从这个数据中获得什么有用信息。
楠公小白L
2007-01-19 · TA获得超过525个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:408万
展开全部
%2d表示输入宽度为2,所以输入了36,所以输入错误,改成
"%3d*%d"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sg22220037
2007-01-19 · 超过51用户采纳过TA的回答
知道答主
回答量:272
采纳率:0%
帮助的人:0
展开全部
楼上说得不对,一般int类型占2个字节,也有的操作系统占4个,long占4个字节,你这样输入时要求整数保留前2位,当然会使X变为36,这样错误就会发生,请你输入时用scanf("%d*%d",&x,&y);这样才对也不会出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5059b1f71
2007-01-19 · TA获得超过312个赞
知道小有建树答主
回答量:616
采纳率:0%
帮助的人:419万
展开全部

楼上的太监九级正解
哈哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hehotlei
2007-01-19 · 超过14用户采纳过TA的回答
知道答主
回答量:193
采纳率:0%
帮助的人:46.9万
展开全部
int 类型在内存中占4个字节,一个字节范围-128-127
365*36超出了范围把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式