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
。