用string替换printf中的格式

时间:2016-03-18 14:13:39

标签: c string printf

我无法理解以下代码。

printf(%d,c).

在我看来,printf函数应如下所示:parameters = {'Cell' : {'volume' : 5}} 我知道它有点奇怪,但实际上它可以正常运行。谁为printf函数添加了双引号?或者 char * a 是否存有双引号?

1 个答案:

答案 0 :(得分:2)

实际上没有人添加引号。 printf期望第一个参数是char*。通常,这是通过向printf提供字符串文字来提供的。

请考虑您提出的解决方案:

printf("%d\n", c);

这不是有人添加引号,而是相反。发生的事情是编译器将"%d\n"识别为字符串文字,它存储它(没有引号和任何字符,如'\ n'替换为实际的换行符 - 所以它存储百分号,' d',一个新行字符和一个NUL字符)远离可执行文件中的某个位置,并使用指向该位置的指针,然后将其用作printf的参数。