关于scanf和getchar的问题?

作为刚学c语言的小白,有一点不太明白,在下面两段类似的程序中。

                int main()
                {
                int a;
                scanf("%c",&a);
                printf("%d",a);
                return 0;
                int main()
                {
                int a;
                a=getchar();
                printf("%d",a);
                return 0;

二者程序都输入a,前者输出的a无论多少次都是32609,而后者则为正常的ASCII码97。
不太明白这其中的原因

1个回答

在scanf函数的格式控制中,格式说明的类型与输入项的类型必须一一对应匹配,如不匹配将导致数据输入出现错误,但是系统并不报错。所以其实用scanf,a的输入有误

qq_40946921
Italink 回复weixin_43693997: a是int型的,与格式控制符%c不匹配,int应该用%d接受
一年多之前 回复
weixin_43693997
weixin_43693997 请问,所以我输入a并没有格式不匹配啊,二者都是字符输入,有什么区别吗
一年多之前 回复
weixin_43693997
weixin_43693997 谢谢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐