$ cd glibc-2.23
$ grep -ErI --include='*.c' '= *f?put([cs]|char)\>' |wc -l
1
$ grep -ErI --include='*.c' '[^= ] *f?put([cs]|char)\>' |wc -l
1764
$ man putc
...
RETURN VALUE
fputc(), putc() and putchar() return the character written
as an unsigned char cast to an int or EOF on error.
也许这是“不太可能”,例如在一系列putchar s 中,一个或两个不明显地失败,而前面和后面的确实成功了?
或者,至少在 99.9999% 的实现中,它们可能根本就没有“return suchandsuch”语句?
或者,连续错误检查,在每个字节之后(在 putchar、putc、fputc 的情况下),可能会导致太大的性能下降?