scanf函数的问题

inti=0;scanf("%d",&i);printf("%d\n",i);printf("%c\n",i);inti=0;scanf("%c",&i);printf(... int i=0;
scanf("%d",&i);
printf("%d\n",i);
printf("%c\n",i);

int i=0;
scanf("%c",&i);
printf("%d\n",i);
printf("%c\n",i);

char i=0;
scanf("%d",&i);
printf("%d\n",i);
printf("%c\n",i);

char i=0;
scanf("%c",&i);
printf("%d\n",i);
printf("%c\n",i);

请问有大侠能告诉我这四种情况下的输出分别是什么,如何解释?
假如四种情况下我的输入都是 1
展开
 我来答
290746987
2011-03-27
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
第一个情况 输出 1 和 一个笑脸
scanf输入 是用%d格式化的 所以是数字1输入赋值给int i 。第一个printf是1,第二个printf把 int 的1格式化成1对应的字符 也就是笑脸(注意数字1对应的字符是笑脸, 字符‘1’对应的数字是49)

第二个情况 输出 49 和 1
scanf用%c来格式化的 所以是把 输入的‘1’字符 赋给 int i , 字符赋给int 不会出错。字符‘1’对应的int数字 是49 所以 第一个printf是49 第二个 printf是把’1‘ 输出 就是1

第三个情况 输出 1 和 一个笑脸 但是有错误
scanf 用%d格式化的输入 所以 输入1, 就把1转换成了笑脸那个字符 赋值给char i,这里会出错,int转换成char会报错。第一次printf是%d输出 输出的就是1,第二次字符输出 就是笑脸,有的编译器能运行出结果,有的运行不了。

第四个情况 输出 49 和1
scanf用%c格式化的输入 也就是i是字符 ’1‘ 所以 第一个输出是输出字符’1‘对应的数字 49 第二个输出 是输出字符’1‘
sun_siliang
2011-03-27 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4617万
展开全部
int i=0;
scanf("%d",&i);//i=1
printf("%d\n",i);//输出1
printf("%c\n",i);//输出ACII码为1的字符

int i=0;
scanf("%c",&i);//i=49,'1'对应的ASCII码不49
printf("%d\n",i);//输出49
printf("%c\n",i);//输出字符1

char i=0;
scanf("%d",&i);//i=1
printf("%d\n",i);//输出1
printf("%c\n",i);//输出ACII码为1的字符

char i=0;
scanf("%c",&i);//i=49
printf("%d\n",i);//输出49
printf("%c\n",i);//输出字符1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋枫5410
2011-03-27 · TA获得超过808个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:198万
展开全部
以scanf("%c",&i);格式输入1时先输出字符1对应的ASCⅡ码,再输出字符1;
以scanf("%d",&i);格式输入1时先输出数字1,再输出对应的ASCⅡ码为1的字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雪藏于心中
2011-03-27
知道答主
回答量:29
采纳率:0%
帮助的人:12.5万
展开全部
1
48(解释:1的Ascall码是48)
1
48
1
48
1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式