printf() 如何在其参数中没有变量列表的情况下工作?

How does printf() work without variable list in its argument?

以下代码:

#include<stdio.h>
void main()
{

    int i=100,j=200;
    printf("%d.....%d");


 }

给予 200.....100 作为输出。 有人可以解释一下 printf 在没有数据列表的情况下是如何工作的

它在编译时提供警告(警告:格式参数太少),and is not documented,因此它是未定义的行为,不应使用。不同的编译器可能具有不同的行为,并且行为甚至可能在同一编译器的不同版本之间发生变化。

尝试在 Wikipedia 上阅读有关它的更多信息。

这是堆栈中的一些垃圾值,因为您没有提供任何整数参数。 printf() 函数不知道没有参数存在,它会搜索相关的堆栈位置并打印所有存在的内容。正如 Robadob 的回答中提到的,行为会根据编译器而改变。