У вас есть 5 итераций здесь:
1st iteration - C is 5 and reduced by 1 -> c=4 which is not 0 so we go on to "(++x) * someFunc".
2nd iteration - C is 4 and reduced by 1 -> c=3 which is not 0 so we go on to "(++x) * someFunc".
3rd iteration - C is 3 and reduced by 1 -> c=2 which is not 0 so we go on to "(++x) * someFunc".
4th iteration - C is 2 and reduced by 1 -> c=1 which is not 0 so we go on to "(++x) * someFunc".
5th iteration - C is 1 and reduced by 1 -> c=0 so we return 1.
На данный момент мы имеем х * х * х * х * 1 и после того, как с шагом 4 х = 9 и поэтому значение 9 * 9 * 9 * 9 * 1 = 6561
Это происходит потому, что функция вычисляется до того, как фактическое умножение может иметь место, но по мере того, как стек разматывается, в момент каждого умножения x
, который передается по ссылке, уже находится в последнем значении, которое is 9.
Вы запустили код с помощью отладки э? –
1) ''. 2) 'int main()'. 3) 'std :: cout'. Все это необходимые изменения, чтобы сделать ваш код стандартным C++. –
chris