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.