为什么选择百分号(%)作为printf系列功能的格式说明符?
每个人都知道,至少在C语言中,您使用printf函数族来打印格式化的字符串。这些函数使用百分号(%)表示格式说明符的开头。例如,%d表示打印一个int和,%u表示打印一个unsigned int。如果您不熟悉printf函数和格式占位符的工作方式,或者只是需要复习,则Wikipedia文章是一个不错的起点。 我的问题是,这是最初还是将来会被选作格式说明符的原因是否特别引人注目? 显然,该决定是在很久以前做出的(很可能是C语言的前身),从那时起,它或多或少成为“标准”的(不仅在C语言中,而且在许多其他语言中,已经在不同程度上采用了它的语法),所以现在改变为时已晚。但是我仍然很好奇,是否有人对为什么首先要做出这种选择有任何见解,以及如果人们正在设计一种具有类似功能的新语言,是否仍然有意义。 例如,对于C#(和其他.NET语言家族),Microsoft在字符串格式化功能的操作方面做出了稍有不同的决定。尽管可以在此处强制执行某种程度的类型安全(与printfC中的实现不同),因此没有必要包含相应参数类型的指示,但他们决定使用零索引的花括号对({})作为格式说明符,例如: string output = String.Format("In {0}, the temperature is {1} degrees Celsius.", "Texas", 37); Console.WriteLine(output); // Output: // In Texas, the temperature is 37 degrees Celsius. 该String.Format方法的文档包含更多信息,就像这篇文章有关复合格式的一般说明一样,但是确切的细节并不重要。关键是他们放弃了%用于指示格式说明符开始的长期实践。C语言本来可以轻松使用{d}和{u},但事实并非如此。任何人都对以下原因有任何想法:为什么要回想起这个决定,以及是否应该遵循新的实现方式? 显然,没有可以不必逃避的字符可以选择,以便可以将其包含在字符串本身中,但是仅使用两个就可以很好地解决该问题。还有哪些其他考虑因素?