gpt4 book ai didi

c - 没有参数解释的 Printf

转载 作者:太空狗 更新时间:2023-10-29 14:53:16 24 4
gpt4 key购买 nike

我知道如果没有给 printf 参数,它会输出一个意外的值。

例子:

#include <stdio.h>

int main() {
int test = 4 * 4

printf("The answer is: %d\n");
return 0;
}

这会返回一个随机数。在使用不同的格式(如 %p、%x 等)后,它不会打印 16(因为我没有将变量添加到参数部分)我想知道的是,这些值在哪里获取从?它是堆栈的顶部吗?每次编译都不是一个新值,这很奇怪,它就像一个固定值。

最佳答案

printf("The answer is: %d\n");

调用未定义的行为。 C 要求转换说明符具有关联的参数。虽然这是未定义的行为并且任何事情都可能发生,但在大多数系统上你最终会转储堆栈。这是 format string attacks 中使用的那种技巧.

关于c - 没有参数解释的 Printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com