%d 如何用于字符串中的“”?结果:4210704

问题描述 投票:0回答:2
#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 是如何组合在一起的。 如果您对此有解释,我很乐意回复您)))

c printf
2个回答
0
投票

""
是一个空字符串,而不是一个字符 - 即,它是一个带有一些奇特语法糖的指针。由于您无法控制该字符串的分配位置,因此它会分配到内存中的任意位置,并且当使用
%d
打印它时,您将获得距包含它的段开头的偏移量。

请注意,在多次执行同一程序时,前两个

printf
语句将始终打印相同的值(3 和 51,如您所述),但第三个语句每次可能打印不同的数字。


0
投票

""
是指向单个空字节(即内存地址)的指针,该空字节充当内存中某处空字符串的字符串终止符。您可以在此处看到内存地址的截断版本。请注意,结果也不会总是相同,尤其是当您修改程序的其他部分时。

© www.soinside.com 2019 - 2024. All rights reserved.