【发布时间】:2014-12-26 18:27:40
【问题描述】:
我知道如果 printf 没有给出任何参数,它会输出一个意外的值。
例子:
#include <stdio.h>
int main() {
int test = 4 * 4
printf("The answer is: %d\n");
return 0;
}
这会返回一个随机数。在使用不同的格式(如 %p、%x 等)后,它不会打印 16(因为我没有将变量添加到参数部分)我想知道的是,这些值在哪里被取从?它是堆栈的顶部吗?每次编译都不是新的值,这很奇怪,就像一个固定的值。
【问题讨论】:
-
这是未定义的行为。它似乎固定的事实是一个快乐的意外。它可能来自堆栈,也可能来自寄存器......你不知道,不应该关心或指望它。
-
1.使用
printf("The answer is: %d\n"),您正在传递 one 参数。 2. 如果该参数指向一个不包含%字符的空终止字符串,那么printf将输出一个符合预期的值。