Вы должны приложить отладчик к программе, поместить некоторые точки останова и пройти через нее по одной строке за раз, чтобы вы могли наблюдать, как код делает свою магию , Возможно, вам может помочь добавить дополнительные скобки и пробелы вокруг неразборчивых выражений.
я написал шаг за шагом объяснение того, что происходит ниже (читайте на свой страх и риск):
p
указывает на первый элемент в array_a[]
после p = array_a;
затем ++p
выполняется и p
указывает на второй элемент в array_a
(и его адрес возвращается оператору разыменования *
)
*
возвращает значение (2) второго поля в массиве (с ++p
возвращается адрес array_a[1]
)
Теперь array_a[2]
извлекается и его значение (4) передается в tavuk(...)
внутри tavuk(...)
(4%3 != 0)
оценивает истинного
--i
выполняется (теперь i = 3
)
tavuk(...)
вызываются с 3, внутри него (3%3 != 0)
принимает значение лжи, и 3 возвращаются
уменьшенным i
(3) добавляются к возвращаемому значению второго tavuk(...)
вызова (также 3) и 6 возвращаются
6 выводится на стандартный вывод
Какая часть этого кода вы не понимаете? Все это? – Kelm
Это похоже на студенческий тест. Чтобы проверить, понимают ли студенты поток. – i486
@ Келм печально, да. – someonetesting