printf("%d");
或printf("%p");
声明的输出结果是什么?
当然我知道我应该传递参数,因为printf期待一个,但假设我将把这个留空将会发生什么?
我知道这会打印一些从堆栈读取的值(从应该放置函数参数的地方)。假设我正在运行Linux机器,我可以期望这是一些有效值(例如函数返回地址)吗?
答案 0 :(得分:6)
这只是未定义的行为。什么事情都可能发生。提供更准确的答案是不可能的。
详细信息取决于库如何实现printf
,以及编译器如何实现变量参数。查看库的源代码和/或生成的程序集,以了解 平台上发生的情况。
答案 1 :(得分:2)
这会调用未定义的行为。就其本质而言,这意味着你无法假设会发生什么。
答案 2 :(得分:1)
这引发了未定义的行为。您可能会打印出随机整数或崩溃或......
答案 3 :(得分:1)
未定义的行为。这意味着您的程序可能会崩溃。
(C99,7.19.6.1p2)“如果格式的参数不足,则行为是 未定义“。
答案 4 :(得分:0)
我可以期待这是一些有效的价值吗? :没有。