我无法理解以下代码。
printf(%d,c).
在我看来,printf函数应如下所示:parameters = {'Cell' : {'volume' : 5}}
我知道它有点奇怪,但实际上它可以正常运行。谁为printf函数添加了双引号?或者 char * a 是否存有双引号?
答案 0 :(得分:2)
实际上没有人添加引号。 printf
期望第一个参数是char*
。通常,这是通过向printf
提供字符串文字来提供的。
请考虑您提出的解决方案:
printf("%d\n", c);
这不是有人添加引号,而是相反。发生的事情是编译器将"%d\n"
识别为字符串文字,它存储它(没有引号和任何字符,如'\ n'替换为实际的换行符 - 所以它存储百分号,' d',一个新行字符和一个NUL字符)远离可执行文件中的某个位置,并使用指向该位置的指针,然后将其用作printf的参数。