当我编译这个程序时,我得到一些随机数作为输出。在Cygwin中输出为47但在RHEL5中,它给出一些负的随机数作为输出。
谁能告诉我原因?
代码:
main()
{
printf("%d");
}
答案 0 :(得分:5)
此程序会引发未定义的行为,因为它不遵循C的规则。您应该在格式字符串之后为每个格式说明符赋予printf
一个参数。
在常见的C实现中,它会在指向"%d"
的指针后打印出堆栈上发生的任何内容,并将其解释为整数。在其他情况下,它可能会发送demons flying out of your nose。
答案 1 :(得分:2)
有3个计数:
printf
main
返回值(在C99中假定为return 0;
,但您的代码肯定不是C99)任何事情都可能发生。
答案 2 :(得分:0)
printf需要第二个参数,因此它会读取该位置堆栈上发生的任何事情。基本上它是读取随机存储器并将其打印出来。