#include <stdio.h>
int main()
{
printf("%c code\n", 'C');
printf("%d", "");
return 0;
}
#include <stdio.h>
int main()
{
printf("%d", 3); /* result 3 */
printf("%d", '3'); /* result 51, because 3 is char (from ASCII table) */
printf("%d", ""); /
return 0;
}
我是 C 初学者。我阅读了 Greg Pery 和 Dean Miller 所著的《C 编程绝对初学者指南》第四版。有 %c %d 和 %f 的示例。我开始对它们进行实验,并注意到我无法解释它是如何制作的。 所以我用 %d 尝试了这些例子并理解了前两个是如何工作的。对于最后一个,我知道计算机如何读取它,但我不确定所有 0 和 1 是如何组合在一起的。 如果您对此有解释,我很乐意回复您)))
""
是一个空字符串,而不是一个字符 - 即,它是一个带有一些奇特语法糖的指针。由于您无法控制该字符串的分配位置,因此它会分配到内存中的任意位置,并且当使用 %d
打印它时,您将获得距包含它的段开头的偏移量。
请注意,在多次执行同一程序时,前两个
printf
语句将始终打印相同的值(3 和 51,如您所述),但第三个语句每次可能打印不同的数字。
""
是指向单个空字节(即内存地址)的指针,该空字节充当内存中某处空字符串的字符串终止符。您可以在此处看到内存地址的截断版本。请注意,结果也不会总是相同,尤其是当您修改程序的其他部分时。