fork download
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. void f (int w,...)
  5. {
  6. //
  7. // Dichiara le variabili che servono a contenere
  8. // gli argomenti privi di parametri formali.
  9. //
  10. long double x;
  11. long long int y;
  12. int z;
  13. //
  14. // Dichiara il puntatore ai parametri.
  15. //
  16. va_list ap;
  17. //
  18. // Posiziona il puntatore dopo il primo parametro,
  19. // ovvero dopo l'ultimo parametro dichiarato
  20. // esplicitamente.
  21. //
  22. va_start (ap, w);
  23. //
  24. // Estrapola il secondo argomento della chiamata (portando
  25. // avanti il puntatore di conseguenza.
  26. //
  27. x = va_arg (ap, long double);
  28. //
  29. // Mostra il valore del primo e del secondo argomento
  30. // ottenuto dalla chiamata della funzione.
  31. //
  32. printf ("w = %i; ", w);
  33. printf ("x = %Lf; ", x);
  34. //
  35. // Estrapola il terzo argomento.
  36. //
  37. y = va_arg (ap, long long int);
  38. //
  39. // Mostra il terzo argomento.
  40. //
  41. printf ("y = %lli; ", y);
  42. //
  43. // Estrapola il quarto argomento.
  44. //
  45. z = va_arg (ap, int);
  46. //
  47. // Mostra il quarto e ultimo argomento.
  48. //
  49. printf ("z = %i\n", z);
  50. //
  51. // Conclude la scansione degli argomenti.
  52. //
  53. va_end (ap);
  54. //
  55. return;
  56. }
  57.  
  58. int main (int argc, char *argv[])
  59. {
  60. f (10, (long double) 12.34, (long long int) 13, 14);
  61. return 0;
  62. }
Success #stdin #stdout 0.02s 1720KB
stdin
Standard input is empty
stdout
w = 10; x = 12.340000; y = 13; z = 14