printf() 和格式说明符链接

printf() and format specifier linking

我非常了解 printf() 和格式说明符的工作原理

注意:- 我正在使用 Turbo c/c++ 编译器,你知道 gcc、g++ 等要好得多,但问题仍然存在

代码:-

void main()
{
 clrscr();
 printf("%d %d %d");
 getch();
}

输出:- 0 344 0

现在,

代码:-

void main()
{
 clrscr();
 printf("%f %f %f");
 getch();
}

输出:- printf:浮点格式未 linked 程序异常终止。

现在,另请注意,我已经在大约 200 个系统上尝试过此方法。

问题:-我相信输出中显示的那些格式说明符数字不是垃圾,因为每个系统都会获得相同的结果,并且它们在 printf() 之间有一些 link通过文件处理或指针的函数和格式说明符。那么现在有人终于可以说出它可能是什么了吗?

注意:-结果可能从 IDE 到 IDE 不等,但对于每个系统上的编译器都是相同的,因为我也在代码块 IDE 上尝试过。

So can anyone now finally tell what it might be?

来自C11 Standard (draft) for the library function fprintf()

7.21.6.1/2

[...]

If there are insufficient arguments for the format, the behavior is undefined.

代码调用未定义行为后任何事情都可能发生。

output:- printf : floating point formats not linked Abnormal program termination.

Turbo C 和 一些 编译器不 link 浮点支持,除非在用户代码中检测到浮点代码。 "%f %f %f" 需要 FP 支持才能工作,但编译器在 compile 时无法识别它。相反,程序在 运行 时间失败。

添加 FP 代码并消除其他误用 printf();

#include <stdio.h>
#include <math.h>
int main() {
  clrscr();
  double a = sqrt(2.0):
  printf("%f %f %f\n",a,a,a);
  getch();
}