输出printf(“%d”),没有其他参数

时间:2012-10-24 11:55:10

标签: c linux

printf("%d");printf("%p");声明的输出结果是什么?

当然我知道我应该传递参数,因为printf期待一个,但假设我将把这个留空将会发生什么?

我知道这会打印一些从堆栈读取的值(从应该放置函数参数的地方)。假设我正在运行Linux机器,我可以期望这是一些有效值(例如函数返回地址)吗?

5 个答案:

答案 0 :(得分:6)

这只是未定义的行为。什么事情都可能发生。提供更准确的答案是不可能的。

详细信息取决于库如何实现printf,以及编译器如何实现变量参数。查看库的源代码和/或生成的程序集,以了解 平台上发生的情况。

答案 1 :(得分:2)

这会调用未定义的行为。就其本质而言,这意味着你无法假设会发生什么。

答案 2 :(得分:1)

这引发了未定义的行为。您可能会打印出随机整数或崩溃或......

答案 3 :(得分:1)

未定义的行为。这意味着您的程序可能会崩溃。

  

(C99,7.19.6.1p2)“如果格式的参数不足,则行为是   未定义“。

答案 4 :(得分:0)

我可以期待这是一些有效的价值吗? :没有。

相关问题