|
10鱼币
int add(int q,int w,...);
void main()
{
int aa = 0, a=1, b = 2, c = 3, d = 4, e =5;
aa = add(a,b,c,d,e);
printf("aa=%d\n",aa);
}
int add(int q, int w, ...)
{
va_list qq;
int j;
int tt;
int t=0, x = 0;
char *ww=0; //这是我测试加上去了一下代码;
ww = va_start(qq, w);
tt = sizeof(int); //int是4字节,为什么地址上加的是8字节,
while(t = va_arg(qq,int) != 0) //每执行一次qq指针指向的地址第增的是8字节;而且这个循环只执行2次;
{
x += t ;
}
va_end(qq);
return x;
}
我想执行的是12+3+4+5的答案,可输出的是4,这是为什么那?
|
最佳答案
查看完整内容
① t = va_arg(qq,int)应加上括号。
② 前两个参数没有加入和中。
③ 函数的实现约定了以0结尾,但调用时却不以0结尾,不但得不到想要的结果,还容易发送越界访问。
④ 递增的是8字节,用的什么编译器?
|