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 的回答中提到的,行为会根据编译器而改变。
以下代码:
#include<stdio.h>
void main()
{
int i=100,j=200;
printf("%d.....%d");
}
给予 200.....100 作为输出。 有人可以解释一下 printf 在没有数据列表的情况下是如何工作的
它在编译时提供警告(警告:格式参数太少),and is not documented,因此它是未定义的行为,不应使用。不同的编译器可能具有不同的行为,并且行为甚至可能在同一编译器的不同版本之间发生变化。
尝试在 Wikipedia 上阅读有关它的更多信息。
这是堆栈中的一些垃圾值,因为您没有提供任何整数参数。 printf()
函数不知道没有参数存在,它会搜索相关的堆栈位置并打印所有存在的内容。正如 Robadob 的回答中提到的,行为会根据编译器而改变。