#include <stdio.h>
#include <stdarg.h>

void
f (int w,...)
{
    long double x;     // Dichiara le variabili che servono
    long long int y;   // a contenere gli argomenti per i
    int z;             // quali mancano i parametri formali.

    va_list ap;        // Dichiara il puntatore agli
                       // argomenti.

    va_start (ap, w);  // Posiziona il puntatore dopo la
                       // fine di «w».

    x = va_arg (ap, long double); // Estrae l'argomento
                                  // successivo portando
                                  // avanti il puntatore
                                  // di conseguenza.

    printf ("w = %i; ", w);     // Mostra il valore del
                                // primo parametro.
    printf ("x = %Lf; ", x);    // Mostra il valore
                                // dell'argomento successivo.

    y = va_arg (ap, long long int);  // Estrapola e mostra
    printf ("y = %lli; ", y);        // il terzo argomento.

    z = va_arg (ap, int);            // Estrapola e mostra
    printf ("z = %i\n", z);          // il quarto argomento.

    va_end (ap);                // Conclude la scansione.

    return;
}

int main (int argc, char *argv[])
{
    f (10, (long double)12.34, (long long int)13, 14);
    return 0;
}