【发布时间】:2011-07-08 19:44:06
【问题描述】:
在做与可变参数函数 i 相关的程序时
得到头文件stdarg.h并用它做了一些简单的问题
但是现在当我改变实际参数的类型时,它会表现出一些奇怪的行为
这是我的代码:
#include<stdio.h>
#include<stdarg.h>
void fun(int a,...)
{
va_list k;
va_start(k,a);
int i=0;
printf("%d ",a);
while((i=va_arg(k,int)!=0)
{
printf(" %d ",i);
}
va_end(k);
}
int main()
{
fun(1,2,3,4,5,6);
printf("\n");
fflush(); //and without flush it is also showing some extra garbage value
fun(2,4,5);
printf("\n");
fflush();
fun('c','f','g','l');
return 0;
}
【问题讨论】:
-
请向我们展示您的包含:每行缩进 4 个空格
-
这如何编译?
fflush需要一个流参数,例如fflush(stdout)。即使你可以编译它(你只是忽略编译器警告???)那么你可能会在运行时得到一些讨厌的行为。 -
是的,它正在发出警告,但它正在运行 b/c 没有错误,正如我已经提到的,如果 ia m 不包括 fflush 那么它也会为 int 提供额外的垃圾值..thanx ..