我从 printf("%d") 得到的输出是什么意思?

What does the output which I get from printf("%d") mean?

我今天试了一段代码,发现 printf("%d") 仍然有输出。 在我的电脑上,我得到“1487504216”的输出。 我想知道为什么会得到输出以及输出的含义。 以下是我试过的代码。

#include <stdio.h>

int main()
{
    printf("%d");

    return 0;
}

printf returns 打印的字符数。在您的情况下,您会得到一个奇怪的数字,因为您的格式无效。 printf("%d", 74) 会 return 2 因为它打印 2 个字符。

printf("%d",... 期望下一个参数是要打印的数字。你没有给它传递参数,所以它只会从堆栈中获取下一个数据,并认为它是要打印的变量。所以你读取了一些垃圾数据并打印出来...

正式这称为 "undefined behavior" 我的解释对于某些编译器和平台可能是正确的,但其他编译器和平台可能会拦截堆栈中的无效读取并中止您的程序,或者可能发生其他任何事情:行为是 undefined.