Как отследить программу на C ++ вручную?

#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

Но когда я пытаюсь решить это с помощью ручки и бумаги, я застреваю. Пожалуйста, покажите мне, как прийти к правильному выводу, чтобы мои концепции были ясными.

-4

Решение

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 и

0

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

Других решений пока нет …

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