#include<iostream>
int fun(int &x,int y=10)
{
if(x%y==0)
return (++x);
else
return (y--);
}
int main()
{
int p=10,q=13;
q=fun(p,q);
cout<<p<<q<<endl;
q=fun(q);
cout<<p<<q<<endl;
q=fun(p);
cout<<p<<q<<endl;
return 0;
}
Выход, как показано следующим образом:Как проследить программу C++ вручную?
1013
1010
1111
Но когда я пытаюсь решить эту проблему с помощью пера и бумаги я застрял. Пожалуйста, покажите мне, как получить правильный результат, чтобы мои концепции были понятны.
Как q = 10 во втором вызове .q передается по ссылке, но не изменяется в функции Это потому, что y-- возвращает 10? –
Thats, потому что во втором вызове мы не передаем второй аргумент, поэтому будет использовано значение по умолчанию в определении функции. –
Спасибо @JaspreetSingh. Это помогло :) –