D中printf()和writeln()之间的差异

D中printf()和writeln()之间的差异,d,D,D编程语言中的printf(“Hello,world!”)和writeln(“Hello,world!”)之间有什么区别 我注意到,writeln()本身在结尾处会断开,而printf()不会断开。这是唯一的区别吗?printf调用C函数,因此根据C类型规则工作。值得注意的是,您必须正确获取格式字符串,否则您将得到无意义的结果。例如,当指定%s而不是%d时,传递int可能会使程序崩溃 D中的writef知道您传递的类型,因此在大多数情况下会自动执行正确的操作,或者在不可能时抛出异常,而不是破坏内

D编程语言中的
printf(“Hello,world!”)
writeln(“Hello,world!”)
之间有什么区别


我注意到,
writeln()
本身在结尾处会断开,而
printf()
不会断开。这是唯一的区别吗?

printf
调用C函数,因此根据C类型规则工作。值得注意的是,您必须正确获取格式字符串,否则您将得到无意义的结果。例如,当指定
%s
而不是
%d
时,传递
int
可能会使程序崩溃

D中的
writef
知道您传递的类型,因此在大多数情况下会自动执行正确的操作,或者在不可能时抛出异常,而不是破坏内存


writefln
是一种
writef
,它也会自动在末尾添加新行。

printf
与C中一样,接受格式字符串。(例如,
printf(“number=%d”,123)
prints“number=123”)


writeln
将每个参数转换为字符串,然后逐个打印,然后打印换行符。(例如,
writeln(“number=”,123)
prints“number=123”)

考虑到writeln/writef更容易使用(您对自己的工作知道得越少),您是否建议始终使用它,您应该始终使用
writefln
/
writef
。您不应该使用在Phobos和/或其他库中作为D端口可用的任何C函数,除非出于某些优化需要,因为已经存在实现,但是通常你应该使用D标准库和/或任何其他具有你需要的功能的库。我实际上不同意这一点,有很多地方C函数非常好,你不应该害怕它们。很多人担心D没有那么多库,因为他们害怕使用完美的C函数。但是你应该理解它们,这样你才能正确地使用它们。writef几乎在所有方面都比printf好(两个优点是编译速度快一点,占用可执行文件的空间少),但并非所有包装函数都是这样。哦,是的,这也很重要!writefln和writeln是不同的-f版本使用格式字符串,普通writeln不使用-它的工作原理与您所说的一样!