stdarg代码全部照搬,怎么结果出来不一样呢?
#include <stdio.h>#include <stdarg.h>
int sum(int n, ...);
int sum(int n, ...)
{
int i, sum = 0;
va_list vap;
va_start(vap, n);
for (i = 0; i < n; i++)
{
sum += va_arg(vap, int);
}
va_end(vap);
return sum;
}
main()
{
int result;
result = sum(2,3,4,5);
printf("result= %d\n", result); //这里反馈数字为7
result = sum(1,1,1,1);
printf("result= %d\n", result); //这里反馈结果为1?
}
我全部代码都是照搬的啊?检查过了很多次,没有错啊。为什么结果反馈不对呢?用的DEV-C++
改成result = sum(3,3,4,5); result = sum(3,1,1,1);试试 小名明SIU 发表于 2018-5-29 10:04
改成result = sum(3,3,4,5); result = sum(3,1,1,1);试试
还是不行,改成3345,和3111的话,返回值是12和3. 难道是编译器问题?我代码都是照搬小甲鱼视频的啊,不会错的 peterz6175 发表于 2018-5-29 21:57
还是不行,改成3345,和3111的话,返回值是12和3. 难道是编译器问题?我代码都是照搬小甲鱼视频的啊,不 ...
int sum(int n, ...);
这个 int n 是做什么用的?
为什么不直接写 int sum(...);
为什么?
printf("%d %d %d\n", a, b, c);
printf是如何知道有多少个参数的?
为什么没有输出变量d
为什么 ?
int sum(int n, ...) 按照你的代码n是参数个数,printf是根据格式化字符串中的%多少确定参数个数 人造人 发表于 2018-5-29 22:14
int sum(int n, ...);
这个 int n 是做什么用的?
为什么不直接写 int sum(...);
你这个只是打出数字啊,小甲鱼视频里是利用stdarg打出运算结果。。。 本帖最后由 peterz6175 于 2018-5-30 21:09 编辑
{:10_265:} peterz6175 发表于 2018-5-30 13:31
这是是利用stdarg求main函数里sum括号里的和,,我又检查了一遍代码。和小甲鱼视频里是一样的。为什么mai ...
int sum(int n, ...);
你告诉我,这个 int n 是做什么用的?
人造人 发表于 2018-5-30 15:41
int sum(int n, ...);
你告诉我,这个 int n 是做什么用的?
int sum(int n, ...);
定义一个sum函数,这个sum函数是一个可变参数的函数,它的第一个参数(int n)是指定后面有多少参数,这里用{...}作为占位符表示参数数目不确定,这是符合C语言语法的,这里的n如果是3的话,就说明后面有3个参数求和,如果n是5的,就说明后面有5个参数,求5个参数的和。。
这是小甲鱼视频里的原话,我拷贝过来的。初学者好多东西都不懂,但是我是完全按照教学视频操作的,不明白为什么不可以正常运行。我怀疑是不是编译器的不同导致的。。 人造人 发表于 2018-5-30 15:41
int sum(int n, ...);
你告诉我,这个 int n 是做什么用的?
不纠结了。代码我理解错了,好低级的错误{:10_249:} 人造人 发表于 2018-5-30 15:41
int sum(int n, ...);
你告诉我,这个 int n 是做什么用的?
第一个参数n是代表后面有多少个参数而已啊,从第二个开始才是求和,我这理解能力{:10_285:} 小名明SIU 发表于 2018-5-29 10:04
改成result = sum(3,3,4,5); result = sum(3,1,1,1);试试
谢谢。明白了,我把N这个参数的作用没理解对
页:
[1]