关于C语言的一些小问题

wovs026 2009-03-22 01:56:12
main()
{
int a;
char c;
scanf("%d",&a);
scanf("%c",&c);
printf("a=%d,c=%d\n",a,c);




}最后结果是怎样的。为什么呀。为什么a=64,b=97
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinqiu7788 2009-08-11
  • 打赏
  • 举报
回复
看一下关于ASCⅡ的资料
merryzl 2009-03-22
  • 打赏
  • 举报
回复
用%d输出,自然是整数了,你想要什么结果呢?
KevinHo 2009-03-22
  • 打赏
  • 举报
回复
不知道你究竟输入了什么
但是有一个问题就是缓冲区的问题,第一个scanf()函数会留下一个回车换行符在缓冲区里,第二个scanf()出现时直接从缓冲区里把回车换行符取了出来赋给了字符c,估计是因为这个出现了与你输入不符的结果
一个办法就是在第一个scanf()之后加一个fflush(stdin);作用是清空缓冲区;另一个办法就是在第一个scanf()加一个getchar();把回车取走,这就行了
soulforcemw 2009-03-22
  • 打赏
  • 举报
回复
main()
{
int a;
char c;
scanf("%d",&a);
scanf("%c",&c);
printf("a=%d,c=%d\n",a,c);
}最后结果是怎样的。为什么呀。为什么a=64,b=97

对于你得到这样的结果是因为你输入的是64a.
分析如下:
scanf("%d",&a); 程序首先从输入流读取一个整数作为a的值。遇到不是int类型的字符a终止。
接着读取字符a自然作为c的值。但是你输出的时候(c=%d\n)是以整数的格式输出字符c的。故输出结果为c的ascii码97。
所以就会出现你上面说的情况。
如果你这样输入123d.输出即为:a=123,c=100(d的ascii)
mj00025846 2009-03-22
  • 打赏
  • 举报
回复
因为你输入的是64 97

或者你是想输入的是97.几

但是PRANTF 中把C定义为%d 输出

所以就是整数了

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧