aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/10-varargs.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/10-varargs.c')
-rw-r--r--test/10-varargs.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/10-varargs.c b/test/10-varargs.c
index c15b887..a3715ab 100644
--- a/test/10-varargs.c
+++ b/test/10-varargs.c
@@ -1,5 +1,7 @@
/* EXPECT:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36
+<1.5>
+1.1 + 2.1 + 3.1 + 5.1 + 1.5 + -1.5 + 1.5 + -1.5 + 1.5 + -1 = 11.9
*/
@@ -18,6 +20,26 @@ int sum(int x, ...) {
return x;
}
+double stkarg(double a, double b, double c, double d, double e, double f, double g, double h, double x) {
+ printf("");
+ return x;
+}
+
+double sumf(double x, ...) {
+ va_list ap;
+ va_start(ap, x);
+ printf("%g", x);
+ for (double y; (y = va_arg(ap, double));) {
+ printf(" + %g",y);
+ x += y;
+ }
+ va_end(ap);
+ return x;
+}
+
+
int main() {
printf(" = %d\n", sum(1,2,3,4,5,6,7,8,0,0));
+ printf("<%g>\n", stkarg(0,0,0,0,0,0,0,0,1.5));
+ printf(" = %g\n", sumf(1.1, 2.1, 3.1, 5.1, 1.5, -1.5, 1.5, -1.5, 1.5, -1.0, 0.0));
}