2017-02-15 4 views
1

Je ne comprends pas pourquoi mysteryfunction (y) équivaut à 40 quand je int mysteryFunction (int, int = 2). Tout le monde peut m'expliquer?Logique derrière la fonction modulaire

Best, MM

#include <iostream> 
using namespace std; 

int mysteryFunction (int, int = 2); 

int main() 
{ 
    int x = 10, y = 20; 
    cout << mysteryFunction (y); 

} 

int mysteryFunction (int x, int y) 
{ 
    return x * y; 
} 

Répondre

3

Dans la déclaration de mysteryFunction() le second paramètre est attribué une valeur par défaut de 2, donc si vous l'appelez avec un seul argument, le second argument y sera 2.

faire mysteryFunction(20) Ainsi est fondamentalement la même chose que faire mysteryFunction(20, 2) qui, selon votre code doit revenir 20 * 2 = 40.

Vous avez peut-être été confondu par le fait que la variable passe à mysteryFunction() comme premier l'argument est nommé y, identique au deuxième paramètre dans sa définition. Cependant, ce sont des variables complètement différentes. En fait, peu importe comment vous les appelez, seule la position des arguments/paramètres est importante (ainsi que leur type si vous prenez en compte la surcharge de fonctions).

0

Dans votre déclaration pour mysteryFunction, vous attribuez une valeur par défaut de 2 au second argument. Ensuite, vous l'appelez avec seulement 1 argument de sorte que la valeur par défaut est utilisée pour le second argument. Donc y = 20 et 20 * 2 = 40. Ne confondez pas les noms de variables. Le x et y à main ont rien à voir avec x et y dans mysteryFunction

1

Ils assumeront par défaut y aura 2, donc lorsque vous remplissez int x, il faudra automatiquement (x, 2) .