为什么> t printf允许您指定多个格式字符串?

时间:2014-09-22 09:18:54

标签: c

为什么以下不可能?

printf("%d", "%d", 2, 4);

这将是一个有用的功能。是由于技术模仿还是设计原因?

1 个答案:

答案 0 :(得分:9)

printf()如何知道格式化字符串的结束位置和实际值的开始?您不包含任何此类信息,这是格式化字符串的全部内容:描述变量的参数数量,以便printf()内的代码知道要处理的参数数量。

以什么方式比

更好
printf("%d%d", 2, 4);

此外,打印结果("24",没有换行符)将很难以任何方式解释,因此您可以添加间距,这将有助于使格式化字符串更具可读性:

printf("%d %d", 2, 4);

这将打印"2 4"(再次,不带换行符)。

请注意,在C中,变量参数函数(在这种情况下为printf())无法以某种方式确定其参数的数量(或类型!)。它必须知道,或者能够根据一些参数(或其他一些状态)自行计算。

另外,如果想打印"%s",我想知道你的想象

printf("%s", "%s");

应该有用吗?