当前位置:  开发笔记 > 编程语言 > 正文

我应该使用printf("\n")还是putchar('\n')在C中打印换行符?

如何解决《我应该使用printf("\n")还是putchar('\n')在C中打印换行符?》经验,为你挑选了3个好方法。

当我用C编写程序时,我经常需要自己打印一个换行符.我知道你至少可以通过两种方式做到这一点:printf("\n")而且putchar('\n'),我不确定哪种方式在风格和效率方面是最佳选择.是否有使用其中一种的最佳实践?真的有关系吗?



1> DaoWen..:

如果您使用的是现代编译器,那么您选择哪一个没有区别[1].以下面的C代码为例.

#include 
#include 

void foo(void) {
    putchar('\n');
}

void bar(void) {
    printf("\n");
}

当编译gcc -O1(启用优化),我们得到以下的(相同的)机器代码都foobar:

movl    $10, %edi
popq    %rbp
jmp _putchar                ## TAILCALL

双方foobar最终调用putchar('\n').换句话说,现代C编译器非常智能,可以printf非常有效地优化调用.只需使用您认为更清晰可读的任何一个.


    我不认为MS cl是一个现代编译器.


@ikegami:Windows中有其他方法可以编译C程序,甚至是那些调用Windows API的程序.`gcc`已被移植.`cl`也缺少C99支持和Microsoft C运行时库.我关心C语言的OP,他可能应该完全转向更现代的平台.

2> chux - Reins..:

是否有使用其中一种的最佳实践?

让风格推动决策.

由于执行效率相同或几乎相同,因此请使用最能传达较大代码功能的样式.

如果功能有很多printf(),请继续使用printf("\n").

同样的putchar('\n')puts("")



3> David Haim..:

这并不重要.我从来没有遇到过打印到控制台的案例,无论是功能选择还是效率,对某人都很重要.


如果打印到控制台是目的 - 你可能正在做一些不值得优化的事情.
这些功能不一定*打印*到控制台.输出可以被重定向到文件,并且如果产生大量输出,则效率可能是一个问题.在这种情况下,`putchar_unlocked('\n');`会更有效但不是更好的选择.
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有