请在C中解释这种歧义

dej*_*avu -5 c random

当我编译这个程序时,我得到一些随机数作为输出.在Cygwin中输出为47但在RHEL5中,它给出一些负的随机数作为输出.谁能告诉我原因?
码:

main()
{
printf("%d");
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 5

此程序会引发未定义的行为,因为它不遵循C的规则.您应该printf在格式字符串后为每个格式说明符提供一个参数.

在常见的C实现中,它会在指针之后打印出堆栈上发生的任何事情"%d",解释为整数.在其他人身上,它可能会让恶魔飞出你的鼻子.

  • +1,但这是错的.打印发生在堆栈上的任何内容都是鼻子守护程序启动过程的一部分. (3认同)