当我用C编写程序时,我经常需要自己打印一个换行符.我知道你至少可以通过两种方式做到这一点:printf("\n")而且putchar('\n'),我不确定哪种方式在风格和效率方面是最佳选择.是否有使用其中一种的最佳实践?真的有关系吗?
Dao*_*Wen 22
如果您使用的是现代编译器,那么您选择哪一个没有区别[1].以下面的C代码为例.
#include <stdlib.h>
#include <stdio.h>
void foo(void) {
putchar('\n');
}
void bar(void) {
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
当编译gcc -O1(启用优化),我们得到以下的(相同的)机器代码都foo和bar:
movl $10, %edi
popq %rbp
jmp _putchar ## TAILCALL
Run Code Online (Sandbox Code Playgroud)
双方foo并bar最终调用putchar('\n').换句话说,现代C编译器非常智能,可以printf非常有效地优化调用.只需使用您认为更清晰可读的任何一个.
cl是一个现代编译器.chu*_*ica 10
是否有使用其中一种的最佳实践?
让风格推动决策.
由于执行效率相同或几乎相同,因此请使用最能传达较大代码功能的样式.
如果功能有很多printf(),请继续使用printf("\n").
同样的putchar('\n')和puts("")
printf和putchar都是 stdio 函数,因此它们都写入相同的FILE句柄(而不是直接写入文件描述符)。
然而,printf因为第一个参数是一个格式字符串,需要扫描替换表达式和转义符,所以要重得多。
所以,无论是printf("\n")和putchar('\n')会做同样的事情,但后者会更快。
这并不重要.我从来没有遇到过打印到控制台的案例,无论是功能选择还是效率,对某人都很重要.