Passer-par-valeur vs passer-par-référence vs-passer-par-valeur-résultat

J'ai cette question, et je suis un peu confus quant à ce qui va être imprimé, en particulier pour le passage par référence. Quelle valeur serait passé à x s'il y a deux paramètres? Merci!

Considérons le programme suivant. Pour chacune de ces méthodes de transmission de paramètre, ce qui est imprimé?

un. Passé par valeur

b. Passé par référence

c. Passé par valeur-résultat

void main()
{
int x = 5;
foo (x,x);
print (x);      
}

void foo (int a, int b)
{
a = 2 * b + 1;
b = a - 1;      
a = 3 * a - b;
}
Quelle serait votre proposition(es)?
Avez-vous essayé de courir?
C'est une question sur un test, donc je n'ai pas essayé de l'exécuter. Si je devais deviner, je dirais a imprimer 5, b, imprimer 23, et c serait d'imprimer 23. B est ce qui me fait mal, parce que serait-x est définie sur 23 ou serait-il rester au 5 s'il est adopté par référence?
Ce que le diable est "passé par valeur-résultat"? Je me considère comme très bien informés sur le C++, mais toute interprétation de ce que j'ai pensé jusqu'à présent est peu probable.
Alors serait-il imprimer 5, 5 et 23? ou 5, 5 et 5?

OriginalL'auteur Strongbuns | 2014-07-23