当我用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
调用。 只需使用您认为更清晰可读的任何一个。
是否有使用其中一种的最佳实践?
让风格推动决策。
由于执行效率相同或几乎相同,因此请使用最能传达较大代码function的样式。
如果函数有很多printf()
,请使用printf("n")
。
同样对于putchar('n')
和puts("")
这并不重要。 我从来没有遇到一个案例,打印到控制台对于某些人而言,无论是function选择还是效率。
printf
和putchar
都是stdio函数,因此它们都写入相同的FILE
句柄(而不是直接写入文件描述符)。
但是, printf
要重得多,因为第一个参数是需要扫描替换表达式和转义的格式字符串。
因此, printf("n")
和putchar('n')
都会做同样的事情,但后者会更快。
printf要慢得多,因为格式字符串在运行时被解析。 当然,平均的家庭作业程序或简单的Project Euler解决方案非常小,无论如何浪费几个CPU周期并不重要。
我会选择putchar
因为printf
的字符串需要被解析。 应该稍快一些 – 但可能不是很多。
以上就是c/c++开发分享我应该使用printf(“ n”)还是putchar(’ n’)在C中打印换行符?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549398.html