当我用C编写程序时,我经常需要自己打印一个换行符.我知道你至少可以通过两种方式做到这一点:printf("\n")
而且putchar('\n')
,我不确定哪种方式在风格和效率方面是最佳选择.是否有使用其中一种的最佳实践?真的有关系吗?
如果您使用的是现代编译器,那么您选择哪一个没有区别[1].以下面的C代码为例.
#include#include void foo(void) { putchar('\n'); } void bar(void) { printf("\n"); }
当编译gcc -O1
(启用优化),我们得到以下的(相同的)机器代码都foo
和bar
:
movl $10, %edi popq %rbp jmp _putchar ## TAILCALL
双方foo
并bar
最终调用putchar('\n')
.换句话说,现代C编译器非常智能,可以printf
非常有效地优化调用.只需使用您认为更清晰可读的任何一个.
我不认为MS cl
是一个现代编译器.
是否有使用其中一种的最佳实践?
让风格推动决策.
由于执行效率相同或几乎相同,因此请使用最能传达较大代码功能的样式.
如果功能有很多printf()
,请继续使用printf("\n")
.
同样的putchar('\n')
和puts("")
这并不重要.我从来没有遇到过打印到控制台的案例,无论是功能选择还是效率,对某人都很重要.