c-得到错误的答案----关于不确定数量的变量



当我在Linux系统中运行下面的程序时,我无法得到预期的答案"9〃;。但我可以在windows系统中找到它。

为什么会发生这种情况?

#include <stdio.h>
int sum(int num, ...){
int* p = &num + 1;
int res = 0;
while(num--){
res += *p++;
}
return res;
}

int main(){
printf("%dn", sum(3,2,3,4));
return 0;
}

我在GDB中调试它,如下所示:在此处输入图像描述

我的系统配置如下。

Linux版本5.11.0-41-generic(buildd@lgw01-amd64-005)(gcc(Ubuntu 9.3.0-17ubuntu1~20.04(9.3.0,GNU ld(适用于Ubuntu的GNU Binutils(2.34(

您需要使用标头<stdarg.h>中定义的宏。

给你。

#include <stdio.h>
#include <stdarg.h>
long long int sum( size_t n, ... ) 
{
long long int result = 0;
va_list ap;
va_start( ap, n );
while (n--)
{
result += va_arg( ap, int );
}
va_end( ap );
return result;
}
int main( void )
{
printf( "%lldn", sum( 9, 1, 2, 3, 4, 5, 6, 7, 8, 9 ) );
}

程序输出为

45

相关内容

  • 没有找到相关文章

最新更新