Нет, они не одинаковы.
Разница между x--
и --x
заключается в том, находится ли возвращаемое значение до или после уменьшения.
В myFunc(x--)
, x--
возвращает старое значение. Таким образом, myFunc()
получает повторяемость с тем же значением -> бесконечная рекурсия.
В myFunc(--x)
, --x
возвращает новое значение. Так что myFunc()
вызывается с уменьшающимся числом каждый раз -> без бесконечной рекурсии.
Это будет легче увидеть, если вы переместили printf
в начало вызова функции:
void myFunc (int x) {
printf("%d, ", x);
if (x > 0) {
myFunc(x--);
}
else
return;
}
Выход: (при вызове с 10)
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, ...