getchar()是否等同于scanf(";%c";),putchar()是否等同于printf(";%c";)?
getchar()是否等同于scanf(";%c";),putchar()是否等同于printf(";%c";)?,c,scanf,getchar,putchar,C,Scanf,Getchar,Putchar,a=getchar()等同于scanf(“%c”,&a) 是putchar(a)相当于printf(“%c”,a)其中a是char变量?一般来说是的,它们是相同的 但他们并没有在一些方面吹毛求疵。键入函数getchar返回int,而不是char。这样做是为了getchar既可以显示所有可能的char值,也可以显示额外的错误代码 因此,当以下代码在大多数编译器中顺利编译时,您实际上是在截断错误消息 char c = getchar(); 不过,函数scanf允许您直接使用char类型,并将错误代
a=getchar()
等同于scanf(“%c”,&a)代码>
是putchar(a)
相当于printf(“%c”,a)
其中a
是char
变量?一般来说是的,它们是相同的
但他们并没有在一些方面吹毛求疵。键入函数getchar
返回int
,而不是char
。这样做是为了getchar
既可以显示所有可能的char
值,也可以显示额外的错误代码
因此,当以下代码在大多数编译器中顺利编译时,您实际上是在截断错误消息
char c = getchar();
不过,函数scanf
允许您直接使用char
类型,并将错误代码分离到返回值中 他们在这里做同样的事情。但是,如果您知道您只是在处理字符,那么getchar
和putchar
将更加有效,因为printf
和scanf
变体每次都必须解析字符串以确定如何处理您的请求。此外,它们可以在较低级别的库中调用,这意味着如果其他地方不需要它们,您可能不必链接printf
/scanf
另请参见非错误消息(如复数形式),“仅”EOF。但除此之外,这是正确的。还应该说getchar()比scanf()效率更高,因为库不必解析格式字符串(链接器也不必链接scanf()这一大块代码)。