Problem dem übergeben von optimalen parametern - stdarg.h

OP #1942461
Lesenswert?

Hallo Leute,
ich habe ein Problem mit einem meiner Programme, und zwar möchte ich 
gerne optimale Parameter übergeben, und das klappt auch fast, aber der 
erste Parameter ist irgendwie immer 0... Hier mal eben mein code:
1
#include <main.h>
2
#include <avr/io.h>
3
#include <conf/controller.h>
4
#if uart == 1
5
#include <includes/uart.c>
6
#endif
7
#include <stdarg.h>
8

9

10
int printargs(int n, ...)
11
{
12
    va_list ap;
13
    int i = 0;
14
 
15
    va_start(ap, n);
16
    for (; n; n--)
17
        i += va_arg(ap, int);
18
    va_end(ap);
19
    uart_send_char('\n');
20
    uart_send_char('\r');
21
    return i;
22
}
23

24
 
25
int main(void)
26
{
27
  uart_init();
28
   uart_send_var((char) printargs(5, 2, 14, 15, 24, 48, 0));
29
   uart_send_var((char) printargs(2, 3, 4));
30
   uart_send_var((char) printargs(0));
31
   uart_send_var((char)printargs(1, 0));
32
   return 0;
33
}


Meiner Meinung nach müsste die Ausgabe so aussehen:
1
108
2
9
3
0
4
1


Sie sieht aber so aus:
1
103
2
7
3
0
4
0

Vielen dank an alle die mir helfen wollen.

Grüße
Felix
#1942520
Lesenswert?

Felix H. schrieb:

> Meiner Meinung nach müsste die Ausgabe so aussehen:
>
>
1
> 108
2
> 9
3
> 0
4
> 1
5
>
>


Wie kommst du da drauf?

printargs(5, 2, 14, 15, 24, 48, 0)
          |
    +-----+
    v
    n wird 5, 5 Zahlen
    2 + 14 + 15 + 24 + 48  -> 103

printargs(2, 3, 4)
          |
    +-----+
    v
    n wird 2, 2 Zahlen
    3 + 4   ->  7

printargs(0)
          |
    +-----+
    v
    n wird 0, 0 Zahlen
    ->    0

printargs(1, 0)
          |
    +-----+
    v
    n wird 1, 1 Zahl
    0   ->  0

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren