Логика за модульной функцией

Я не понимаю, почему mysteryfunction (y) будет равняться 40
когда я int mysteryFunction (int, int = 2). Кто-нибудь может мне объяснить?

Бест, ММ

#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;
}

2

Решение

В декларацииmysteryFunction() второму параметру присваивается значение по умолчанию 2, так что если вы называете это только с одним аргументом второй аргумент y будет 2,

Следовательно делать mysteryFunction(20) в основном то же самое, что и mysteryFunction(20, 2), который по вашему коду должен вернуть 20 * 2 = 40.

Вы могли быть смущены тем фактом, что переменная, которую вы передаете mysteryFunction() как его первый аргумент назван y, так же, как второй параметр в его определении. Однако это совершенно разные переменные. На самом деле, не имеет значения, как вы их называете, имеет значение только положение аргументов / параметров (вместе с их типом, если принять во внимание перегрузку функций).

3

Другие решения

По умолчанию они предполагают, что у будет 2, поэтому, когда вы заполните int x, оно автоматически примет (x, 2).

1

В вашей декларации для mysteryFunction вы задаете значение по умолчанию 2 для второго аргумента. Затем вы вызываете его только с одним аргументом, поэтому для второго аргумента используется значение по умолчанию. Так что y = 20 и 20 * 2 = 40. Не путайте имена переменных. x а также y в main не имеет ничего общего с x а также y в mysteryFunction

0
По вопросам рекламы [email protected]