为什么以下不可能?
printf("%d", "%d", 2, 4);
这将是一个有用的功能。是由于技术模仿还是设计原因?
答案 0 :(得分:9)
printf()
如何知道格式化字符串的结束位置和实际值的开始?您不包含任何此类信息,这是格式化字符串的全部内容:描述变量的参数数量,以便printf()
内的代码知道要处理的参数数量。
以什么方式比
更好printf("%d%d", 2, 4);
此外,打印结果("24"
,没有换行符)将很难以任何方式解释,因此您可以添加间距,这将有助于使格式化字符串更具可读性:
printf("%d %d", 2, 4);
这将打印"2 4"
(再次,不带换行符)。
请注意,在C中,变量参数函数(在这种情况下为printf()
)无法以某种方式确定其参数的数量(或类型!)。它必须知道,或者能够根据一些参数(或其他一些状态)自行计算。
另外,如果想打印"%s"
,我想知道你的想象
printf("%s", "%s");
应该有用吗?