Cercando di indicare chiaramente la semantica di una chiamata di funzione.
Nel chiamare una funzione, gli argomenti passati alla funzione sono quelli che il codice chiamante inizialmente dà o quelli che la funzione riceve ?
Con il codice come sotto, il codice chiamante in bar()
chiama foo()
due volte. Questa prima volta con int 2
, quindi ...
1) Funzione foo()
è chiamata con double 3.1
, x
ha il valore convertito di int 3
,
o
2) Il valore double 3.1
è convertito in int 3
e la funzione foo()
è chiamata,
o
3) Qualcos'altro.
IOWs, è la conversione di double 3.1
in int 3
parte della chiamata di una funzione (la conversione non avverrà senza la chiamata di funzione) o è un'attività precedente (si consideri parte del codice chiamante) prima della chiamata di funzione?
void foo(int x);
void bar() {
foo(2);
foo(3.1);
}
Questa query è principalmente C
, tuttavia i pensieri agnostici del linguaggio sono apprezzati. Non è necessaria una risposta rapida.
[Modifica]
Nota: questa non è una questione di come le piattaforme creano il binario / eseguibile per implementare il codice del programma - solo per il codice / lingua.
[Modifica 2] @ Erik Eidt un commento utile ha fornito parole migliori da usare (almeno per C) per questa domanda.
Forse una domanda più succinta sarebbe, dal punto di vista della lingua : "Le funzioni sono chiamate con" argomenti reali "o" parametri formali "?
C11 3.3 argomenti attuali e 3.16 1 parametro formale.