【发布时间】:2018-07-06 20:30:57
【问题描述】:
在下面的代码中,
#include<conio.h>
clrscr();
gotoxy(10, 20);
ch= getch(a);
我们可以看到库函数在没有定义原型的情况下被调用,三个库函数:clrscr() gotoxy(int int)和getch()在conio.h头文件中定义了它们的原型,它们出现在头文件本身中是这样的,
void clrscr();
void gotoxy(int int);
int getch();
但是在下面的代码中,编译器是如何知道printf() 函数的原型的呢?由于代码执行时没有任何错误,尽管在第一个 printf() 最后一个 int 格式说明符打印垃圾值,而在第二个中,j 的值根本没有被打印,因为它没有被指定。
#include<stdio.h>
int i=10, int j=20;
printf("%d%d%d",i,j);
printf("%d",i,j);
当printf()函数的格式说明符是float或char变量时,头文件stdio.h如何描述场景?
【问题讨论】:
-
...。请注意,好的编译器无论如何都会发现错误。 -
这是一个叫做variadic函数的东西。