#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;
}
Вывод, как показано ниже:
1013
1010
1111
Но когда я пытаюсь решить это с помощью ручки и бумаги, я застреваю. Пожалуйста, покажите мне, как прийти к правильному выводу, чтобы мои концепции были ясными.
p = 10 q = 13
1-й звонок
р = 10, q = 13
р передается по ссылке
возвращается будет y—, так как это пост декремент, он вернется 13
2-й звонок
q = 13
принят реф
х = 13 у = 10
возврат будет y— что = 10, а не 9, так как это сообщение
теперь р = 10 и q = 10
3-й звонок
x = 10 и y = 10 по умолчанию
вернуть ++ x и x = 11, поэтому q = 11, теперь, так как его вызов по ref x = 11, поэтому p = 11 и
Других решений пока нет …