
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 展开
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 展开
展开全部
第一个情况 输出 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‘
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‘
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以scanf("%c",&i);格式输入1时先输出字符1对应的ASCⅡ码,再输出字符1;
以scanf("%d",&i);格式输入1时先输出数字1,再输出对应的ASCⅡ码为1的字符
以scanf("%d",&i);格式输入1时先输出数字1,再输出对应的ASCⅡ码为1的字符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1
48(解释:1的Ascall码是48)
1
48
1
48
1
48(解释:1的Ascall码是48)
1
48
1
48
1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询