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